Python教程
- 9.2 作用域和命名空间
- 10.1 操作系统接口
- 10.2 文件通配符
9.2 作用域和命名空间
-
作用域虽然是被静态确定的,但会被动态使用。执行期间的任何时刻,都会有 3 或 4 个“命名空间可直接访问”的嵌套作用域:
-
最内层作用域,包含局部名称,并首先在其中进行搜索
-
那些外层闭包函数的作用域,包含“非局部、非全局”的名称,从最靠内层的那个作用域开始,逐层向外搜索。
-
倒数第二层作用域,包含当前模块的全局名称
-
最外层(最后搜索)的作用域,是内置名称的命名空间
-
-
Python 有一个特殊规定。如果不存在生效的 global 或 nonlocal 语句,则对名称的赋值总是会进入最内层作用域。赋值不会复制数据,只是将名称绑定到对象。删除也是如此:语句 del x 从局部作用域引用的命名空间中移除对 x 的绑定。所有引入新名称的操作都是使用局部作用域:尤其是 import 语句和函数定义会在局部作用域中绑定模块或函数名称。
global 语句用于表明特定变量在全局作用域里,并应在全局作用域中重新绑定;nonlocal 语句表明特定变量在外层作用域中,并应在外层作用域中重新绑定。
10.1 操作系统接口
- 一定要使用 import os 而不是 from os import * 。这将避免内建的 open() 函数被 os.open() 隐式替换掉,因为它们的使用方式大不相同。
- 对于日常文件和目录管理任务, shutil 模块提供了更易于使用的更高级别的接口。
10.2 文件通配符
- glob 模块提供了一个在目录中使用通配符搜索创建文件列表的函数。