原教程是廖雪峰的:Python教程-廖雪峰的官方网站
Python简介
- Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
- Python是一种相当高级的语言。
- 代码少的代价是运行速度慢。
- 用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。
- Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。
- Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。
- 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
- 第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
第一个Python程序
命令行模式提示符类似C:\>
Python交互模式提示符是>>>
输入exit()
并回车退出Python交互模式
在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。
在命令行模式下,可以直接运行.py文件。
使用文本编辑器
直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。
直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print('Hello, world')
输入和输出
print()会依次打印每个字符串,遇到逗号“,”会输出一个空格
name = input()
name = input('please enter your name: ')
print('hello,', name)
Python基础
以#开头的语句是注释
当语句以冒号:结尾时,缩进的语句视为代码块。
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。
Python程序是大小写敏感的
坚持使用4个空格的缩进
在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
数据类型和变量
如果字符串内部既包含’又包含”怎么办?可以用转义字符\
来标识,比如:
'I\'m \"OK\"!'
Python还允许用r''
表示''
内部的字符串默认不转义
>>> print(r'\\\t\\')
\\\t\\
Python允许用'''...'''
的格式表示多行内容
>>> print('''line1
... line2
... line3''')
line1
line2
line3
如果写成程序并存为.py文件,就是:
print('''line1
line2
line3''')
可以直接用True
、False
表示布尔值(请注意大小写)
布尔值可以用and
、or
和not
运算。
空值用None
表示
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言
可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据
在Python中,通常用全部大写的变量名表示常量
在Python中,有两种除法,一种除法是/:
>>> 10 / 3
3.3333333333333335
/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
>>> 9 / 3
3.0
还有一种除法是//,称为地板除,两个整数的除法仍然是整数:
>>> 10 // 3
3
Python的整数没有大小限制.
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
字符串和编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
以Unicode表示的str通过encode()方法可以编码为指定的bytes
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法
如果bytes中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
用%%来表示一个%
使用list和tuple
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素(真是太骚了:
>>> classmates[-1]
'Tracy'
以此类推,可以获取倒数第2个、倒数第3个:
>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates.append('Adam')
>>> classmates.insert(1, 'Jack')
>>> classmates.pop(1)
插播一句,c++中vector的删除:vec.erase(vec.begin() + 1);
尾部加入:vec.push_back(6);
list里面的元素的数据类型也可以不同,比如:
>>> L = ['Apple', 123, True]
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:
>>> classmates = ('Michael', 'Bob', 'Tracy')
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
>>> t = (1,)
>>> t
(1,)
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
条件判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
input()返回的数据类型是str
循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:
>>> list(range(5))
[0, 1, 2, 3, 4]
使用dict和set
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
如果key不存在,dict就会报错
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in d
False
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
注意:返回None的时候Python的交互环境不显示结果。
要删除一个key,用pop(key)方法,对应的value也会从dict中删除
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的
dict的key必须是不可变对象。
set和dict的唯一区别仅在于没有存储对应的value
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
显示的顺序也不表示set是有序的。。
重复元素在set中自动被过滤
通过add(key)方法可以添加元素到set中
通过remove(key)方法可以删除元素
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37311.html