1、模块(Module)
Python模块是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。
模块能够让你更有逻辑组织你的代码段
模块能定义函数、类和变量,模块里也能包含可执行的代码
模块 support.py
def print_func( par ):
print "Hello :", par
return
2、import 语句
模块定义后,可以使用import语句引入模块
import support
support.print_func("7890")
输出结果: Hello :7890
一个模块只会被导入一次,不管你执行多少次import。
3、form...import 语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
from support import print_func
print_func("7890")
输出结果: Hello :7890
from...import * 语句 把一个模块的所有内容全部导入到当前的命名空间
4、命名空间
定义:名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响
local 局部命名空间,每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参、内部定义的局部变量
global 全局命名空间,每个模块加载所执行时创建,记录了模块中定义的变量,包括模块中定义的函数、类、其他导入的模块、模块级的函数和常量
built-in python自带的内建命名空间,任何模块均可以访问,放着内置的函数和异常
生命周期
local 在函数被调用时才被创建,但函数返回结果或抛出异常时被删除。(每一个递归函数都拥有自己的命名空间)
global 在模块被加载时创建,通常一直保留直到python解释器退出
built-in 在python解释器启动时创建,一直保留直到解释器退出
各命名空间创建顺序:python解释器启动-> 创建内建函数命名空间 -> 加载模块 -> 创建全局命名空间 -> 函数被调用 -> 创建局部命名空间
命名空间销毁顺序:函数调用结束 -> 销毁函数对应的局部命名空间 -> python虚拟机(解释器)退出 -> 销毁全局命名空间 -> 销毁内建命名空间
python 解释器加载阶段创建出内建命名空间、模块的全局命名空间,局部命名空间是在运行阶段函数被调用时动态创建出来的,函数调用结束动态销毁。
5、作用域
作用域是针对变量而言,指申明的变量在程序里的可应用范围。或者称为变量的可见性。
只有函数、类、模块会产生作用域,代码块不会产生作用域
Local 局部作用域
Enclosing (嵌套函数的外层函数内部)嵌套作用域(闭包)
Global 全局作用域
Built-in 内建作用域