变量和常量
变量命名使用全部小写的方式,可以使用下划线。
变量在使用前必须赋值,然后在内存中创建该变量。
变量赋值不需要声明数据类型,Python 会自动检测数据类型。
>>> a = 10
>>> print(a,type(a))
10 <type 'int'>
常量命名使用全部大写的方式,可以使用下划线。
命名空间
命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。
命名空间提供了在项目中避免名字冲突的一种方法,一个命名空间中不能有重名,但不同的命名空间可以重名。
Python有三种命名空间:局部命名空间,全局命名空间,内置命名空间。
作用域
作用域是 Python 程序可以直接访问命名空间的正文区域。
在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。
Python的作用域有4种:局部作用域,闭包函数外作用域,全局作用域,内建作用域。
g_count = 0 # 全局作用域 def outer(): o_count = 1 # 闭包函数外作用域 def inner(): i_count = 2 # 局部作用域
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
global 和 nonlocal
当局部作用域修改函数外作用域的变量时,要用到global和nonlocal关键字。
g_count = 0 def outer(): global g_count = 1 o_count = 10 def inner(): nonlocal o_count = 20