22、语句和语法
(1) 注释(#),井号之后的内容为Python的注释
(2) 继续(\),一行过长的语句可以使用反斜杠(\)分解成几行,有两种例外情况一个语句不使用反斜线也可以跨行。在使用闭合操作符(小括号、中括号、花括号、三引号)时,单一语句可以跨多行。
注:推荐使用括号,因为这样可读性更好。
(3) 多个语句构成的代码组(:),缩进相同的一组语句构成一个代码块,我们称之代码组。
注:推荐使用四个空格宽度做缩进,避免使用制表符。
(4) 同一行书写多个语句(;),分号( ; )允许你将多个语句写在同一行上,语句之间用分号隔开,而这些语句也不能在这行开始一个新的代码块。
(5) 模块,每一个Python 脚本文件都可以被当成是一个模块。模块以磁盘文件的形式存在。模块可以包含直接运行的代码块、类定义、函数定义或这几者的组合。
23、变量赋值
(1) 赋值运算符(=)
在 Python 语言中,赋值并不是直接将一个值赋给一个变量, 对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。
(2) 链式赋值
>>> x = 1
>>> y = x = x + 1
>>> x, y
(2, 2)
(3) 增量赋值
+= -= *= /= %= <<= >>= &= ^= |= **=
增量赋值相对普通赋值不仅仅是写法上的改变,最有意义的变化是第一个对象(我们例子中的 A)仅被处理一次。可变对象会被就地修改(无修拷贝引用), 不可变对象则和 A = A + B 的结果一样(分配一个新对象)。
注:Python 不支持类似 x++ 或 --x 这样的前置/后置自增/自减运算。
(4) 多重赋值
>>> x = y = z = 1
>>> x
1
>>> y
1
>>> z
1
(5) 多元赋值
>>> x, y, z = 1, 2, 'a string'
>>> x
1
>>> y
2
>>> z
'a string'
注:建议加上括号以增强可读性
>>> (x, y, z) = (1, 2, 'a string')
>>> x
1
>>> y
2
>>> z
'a string'
(6) 变量交换
//C语言中的两个变量交换
tmp = x;
x = y;
y = tmp;
Python中的两个变量交换:
>>> x, y = 1, 2
>>> x
1
>>> y
2
>>> x, y = y, x
>>> x
2
>>> y
1
显然, Python 在赋值之前已经事先对 x 和 y 的新值做了计算。
24、标识符
(1) 合法的Python标识符
- 第一个字符必须是字母或下划线(_)
- 剩下的字符可以是字母和数字或下划线
- 大小写敏感
(2) 关键字
and | as | assert | break |
---|---|---|---|
class | continue | def | del |
elif | else | except | exec |
finally | for | form | global |
if | import | in | is |
lamada | not | or | pass |
raise | return | try | |
while | with | yield | None |
(3) 专用下划线标识符
- _XXX 不用'from module import *'导入
- __XXX__ 系统定义名字
- __XXX 类中的私有变量名
25、模块结构和布局
一个典型模块的内部结构:
#(1) 起始行(Unix)
#(2) 模块文档
#(3) 模块导入
#(4) 变量定义
#(5) 类定义
#(6) 函数定义
#(7) 主程序
注:__name__指示模块应如何被加载:
- 如果模块是被导入,__name__ 的值为模块名字
- 如果模块是被直接执行,__name__ 的值为 '__main__'