Bootstrap

Python教程笔记(3)

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 模块提供了一个在目录中使用通配符搜索创建文件列表的函数。
;