变量与常量
一、命名规则:以字母或下划线开头,其他字符可以是数字、字母或下划线。大小写敏感。Python是动态类型语言,不需要预先声明变量类型,变量值和类型在赋值时被初始化。
二、Python赋值语句不返回值,不支持类似x++或—x这样的单目双重运算符,允许符合赋值(*=)、多重赋值和“多元”赋值
三、变量的赋值可以是一条被分成了多行的命令,用反斜线(“\”)作为续行符,当一条命令用续行符(“\”)分割成多行时,后续的行可以以任何方式缩近,此时Python通常的严格的缩近规则无需遵守。
四、Python有局部变量和全局变量之分,但没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。Python不允许引用一个未被赋值的变量,试图这样做会引发一个异常。
五、Python的一种编程简写是一次使用序列来给多个变量赋值。Python中,可以使用内置的range函数和多变量赋值的方法来快速进行赋值,与C++中的枚举相似。如:
(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) =range(7)
Python内置的关键字如下,内置的关键字不允许被用作变量名。
and |
as |
assert |
break |
class |
continue |
def |
del |
elif |
else |
except |
exec |
finally |
for |
from |
global |
if |
import |
in |
is |
lambda |
not |
or |
pass |
print |
raise |
return |
try |
while |
with |
yield |
None |
如果要删除一个已定义的变量的话,可以使用del[var]
关键字。
作用域
作用域是指Python程序可以直接访问到的命名空间。“直接访问”在这里意味着访问命名空间中的命名时无需加入附加的修饰符。尽管作用域是静态定义,在使用时他们都是动态的。每次执行时,至少有三个命名空间可以直接访问的作用域嵌套在一起:包含局部命名的使用域在最里面,首先被搜索;其次搜索的是中层的作用域,这里包含了同级的函数;最后搜索最外面的作用域,它包含内置命名。如果一个命名声明为全局的,那么所有的赋值和引用都直接针对包含模全局命名的中级作用域。另外,从外部访问到的所有内层作用域的变量都是只读的。
从文本意义上讲,局部作用域引用当前函数的命名。在函数之外,局部作用域与全局使用域引用同一命名空间:模块命名空间。类定义也是局部作用域中的另一个命名空间。作用域决定于源程序的文本:一个定义于某模块中的函数的全局作用域是该模块的命名空间,而不是该函数的别名被定义或调用的位置,了解这一点非常重要。另一方面,命名的实际搜索过程是动态的,在运行时确定的——然而,Python语言也在不断发展,以后有可能会成为静态的“编译”时确定,所以不要依赖于动态解析!(事实上,局部变量已经是静态确定了。)
Python的一个特别之处在于其赋值操作总是在最里层的作用域。赋值不会复制数据——只是将命名绑定到对象。删除也是如此:“del x ”只是从局部作用域的命名空间中删除命名x。事实上,所有引入新命名的操作都作用于局部作用域。特别是import语句和函数定将模块名或函数绑定于局部作用域。(可以使用global语句将变量引入到全局作用域。)