Python学习手册
1.编译器
CPython
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>
作为提示符,而IPython用In [序号]:
作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
小结
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
本教程的所有代码只确保在CPython 3.x版本下运行。请务必在本地安装CPython(也就是从Python官方网站下载的安装程序)。
版本区别
2.x与3.x对于初学者最大区别是print。
2.x 打印后面不需要跟上圆括号,而3.x必须跟上圆括号。
2.Python命令行交互模式
- 直接输入python默认启动的是python2 的交互模式,然后在shell窗口中可以看到>>>箭头待输入。
- 输入python3时,那么交互模式就是3.x版本的python。
- 退出交互模式有2种方式,优雅退出是
exit()
,强制退出是ctrl+d
- 交互模式退出,在当前linux路径下不会保留任何文件信息!
3.Python编码规范(语法)
3.1编码集规则
-
如无特殊情况, 文件一律使用 UTF-8 编码
-
如无特殊情况, 文件头部必须加入
#-*-coding:utf-8-*-
标识# -*- coding: UTF-8 -*- # coding=utf-8(等号两边不能有空格)
3.2标识符
- 第一个字符必须是字母表中的字母或下划线
- 标识符中的其他部分由字母、数字和下划线组成
- 标识符对大小写敏感
- 在python3中,非ASCII标识符 (如中文字符) 也是允许的
3.3注释
- 单行注释:井号 #
- 多行注释:三个单引号’’’,或者三个双引号**"""**
3.4关键字和保留字
在交互命令行里敲如下命令
import keyword #导入keyword
print(len(keyword.kwlist)) #打印集合长度 35
print(keyword.kwlist) #打印关键字
打印的关键字如下!
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
最新版本多加了2个keyword 'assert', 'async'
。
简介:
1.and:表示逻辑‘与’
async/await:async(协程),await语法只能出现在通过async修饰的函数中。而且await后面的对象需要是一个Awaitable,或者实现了相关的协议。相关帖子async/await
2.del:用于list列表操作,删除一个或者连续几个元素。
3.from:导入相应的模块,用import或者from…import
4.not:表示逻辑‘非’
5.while:while循环,允许重复执行一块语句,一般无限循环的情况下用它
6.as:as单独没有意思,是这样使用:with…as用来代替传统的try…finally语法的。
7.elif:和if配合使用的,if语句中的一个分支用elif表示。
8.global :定义全局变量
例如:
name = 10
age = 20
def test():
global name
age = 30
name = ‘aa’
#print(name)
test()
print(name) # ‘aa’
print(age) # 20
9.or:表示逻辑“或”
10.with:和as一起用,使用的方法请看as,见with
11.assert:表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError
v1 = 10
v2 = 20
assert(v1 > v2)
12.else:参考下面if的解释
13.if:if语句用于选择分支,依据条件选择执行那个语句块。(if语句中最好不要嵌套if语句,建议把嵌套的if语句写在另一个函数中)
14.pass:pass的意思就是什么都不做
15.yield:用起来和return很像,但它返回的是一个生成器
16.break:作用是终止循环,程序走到break的地方就是循环结束的时候。
17.except:和try一起使用,用来捕获异常。
18.import:用来导入模块,有时这样用from…import
19.class:定义类
20.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b。
21.raise:raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了
22.continue:跳过continue后面循环块中的语句,继续进行下一轮循环。
23.finally:看到finally语句,必然执行finally语句的代码块。
24.is:Python中的对象包含三要素:id、type、value,用来判断对象是否相等
25.return:用于跳出函数,也可以在跳出的同时返回一个值。
26.def:用于定义方法
27.for:for…in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目
28.lambda:即匿名函数
29.try:出现在异常处理中,使用格式为:try…except,try中放想要执行的语句,except捕获异常
30.nonlocal:nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
例如:
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
def make_counter_test():
mc = make_counter()
print(mc())
print(mc())
print(mc())
make_counter_test()
3.5 行和缩进
学习 Python 与其他语言最大的区别就是,Python的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
例如:
if True:
print “True”
else:
print “False”
3.6 多行语句
Python语句中一般以新行作为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
print('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
aaaaaaaaaaaaaaaaaaaa’)
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = [‘Monday’, ‘Tuesday’, ‘Wednesday’,
‘Thursday’, ‘Friday’]
3.7 python的引号
Python 可以使用引号( ’ )、双引号( " )、三引号( ‘’’ 或 “”" )表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句""" #comment
最后一个就是一个注释,一对三引号包裹注释内容。
3.8 Python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
3.9 等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
input("\n\n按下 enter 键后退出。")
3.10 同一行显示多条语句
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
x = 'runoob';print(x + '\n')
3.11 多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
例如:
if expression :
suite
elif expression :
suite
else :
suite
3.12 Print 输出
同类型才可以相加
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
:
x="a"
y="b"
# 换行输出
print( x )
print( y )
print('---------')
# 不换行输出
print( x, end=