下划线(_)在解释器中有特别的含义,表示最后一个表达式的值。所以上面的代码执行之后,下划线变量会包含字符串:
>>> _
Hello World!
Python 有两种除法运算符,单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)。乘方运算符, 双星号(**)。
Python 不支持 C 语言中的自增 1 和自减 1 运算符, 这是因为 + 和 - 也是单目运算符,
Python 会将 --n 解释为-(-n) 从而得到 n , 同样 ++n 的结果也是 n.
>>> pystr * 2
'PythonPython'
>>> '-' * 20
'--------------------'
字符串的切片运算,当:在前是前闭后开,在后则是前闭后也闭,可以把冒号当成是一个向特定方向的全匹配。
元组也可以进行切片运算,得到的结果也是元组(不能被修改)
列表解析
这是一个让人欣喜的术语, 表示你可以在一行中使用一个 for 循环将所有值放到一个列表
当中:
>>> squared = [x ** 2 for x in range(4)]
>>> for i in squared:
... print i
0
1
4
9
列表解析甚至能做更复杂的事情, 比如挑选出符合要求的值放入列表:
>>> sqdEvens = [x ** 2 for x in range(8) if not x % 2]
>>>
>>> for i in sqdEvens:
... print i
0
4
16
36
我们的代码中可以在 print 语句中使用逗号来抑制自动生成的换行符号: print lineinfo,。
当一个类实例被创建时, __init__() 方法会自动执行, 在类实例创建完毕后执行, 类
似构建函数。__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数, 它并不创
建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初
始化工作。通过创建自己的 __init__() 方法, 你可以覆盖默认的 __init__()方法(默认的
方法什么也不做) 从而能够修饰刚刚创建的对象。
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避
免用下划线作为变量名的开始。一般来讲,变量名_xxx 被看作是“私有的”,在模块或类外不
可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对
Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。
主程序
无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里
不会有太多功能性代码,而是根据执行的模式调用不同的函数。
__name__ 指示模块应如何被加载
由于主程序代码无论模块是被导入还是被直接执行都会运行, 我们必须知道模块如何决定
运行方向。一个应用程序可能需要导入另一个应用程序的一个模块,以便重用一些有用的代码
(否则就只能用拷贝粘贴那种非面向对象的愚蠢手段)。这种情况下,你只想访问那些位于其
它应用程序中的代码,而不是想运行那个应用程序。因此一个问题出现了,“Python 是否有
一种方法能在运行时检测该模块是被导入还是被直接执行呢?” 答案就是......(鼓声雷
动).....没错! __name__ 系统变量就是正确答案。
如果模块是被导入, __name__ 的值为模块名字
如果模块是被直接执行, __name__ 的值为 '__main__'
Python 解释器承担了内存管理的复杂任务, 这大大简化了应
用程序的编写。你只需要关心你要解决的问题,至于底层的事情放心交给 Python 解释器去做就
行了。