2010年(19)
分类:
2010-05-17 23:51:37
1、 赋值并不是直接将一个值赋给一个变量, 尽管你可能根据其它语言编程经验认为应该如此。在Python 语言中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。一切皆为对象。
Python 的赋值语句不会返回值,但可以链式赋值。
>>> x = 1
>>> y = (x = x + 1)
Traceback ( File "
y = (x = x + 1)
^
SyntaxError: invalid syntax
>>> y = x = x + 1
>>> x,y
(2, 2)
>>> x = y = z = 1
在上面的例子中,一个值为1的整数对象被创建,该对象的同一个引用被赋值给 x、y 和z 。也就是将一个对象赋给了多个变量。
多元赋值:要用括号括起,相当于一个元组
>>> x,y = 1,2
>>> x
1
>>> y
2
>>> x,y = y,x #无须中间变量就可以实现互换,很方便
>>> x
2
>>> y
1
2、 标识符
_xxx 不用'from module import *'导入
__xxx__系统定义名字
__xxx 类中的私有变量名
3、文档
Python 还提供了一个机制,可以通过__doc__特别变量,动态获得文档字串。在模块,类声明,或函数声明中第一个没有赋值的字符串可以用属性obj.__doc__来进行访问,其中obj是一个模块,类,或函数的名字。这在运行时刻也可以运行。
4、 风格:
模块风格:
# (1) 起始行(Unix)
# (2) 模块文档——简要介绍模块的功能及重要全局变量的含义,模块外可通过 module.__doc__ 访问这些内容。
#(3) 模块导入——
# (4) 变量定义——这里定义的变量为全局变量,尽量不要使用全局变量。
# (5) 类定义
# (6) 函数定义
# (7) 主程序
推荐代码风格:主程序调用main()函数
主程序代码通常都和你前面看到的代码相似,检查 __name__ 变量的值然后再执行相应的调用(参阅下一页的核心笔记)。主程序中的代码通常包括变量赋值,类定义和函数定义,随后检查__name__来决定是否调用另一个函数(通常调用main()函数)来完成该模块的功能。主程序通常都是做这些事。
如果模块是被导入, __name__ 的值为模块名字
如果模块是被直接执行, __name__ 的值为 '__main__'
5、 得好好理解一下引用计数的概念和意义。
6、核心技巧:使用局部变量替换模块变量。