A和B都是非空集合,存在对应关系f,使得A中的任意一个元素a,在B中都有唯一元素b与之对应,则f称为从A到B的映射,写作f:A->B。
b称为a在映射f下的像,记作:b=f(a)。
a称为b关于映射f的原像。
集合A中所有元素的像(所有b)的集合称为映射f的值域,记作f(A)。
python的命名空间(namespace)是指从名称到对象的映射。
对象=f(名称),f为命名空间。
任何一个名称,通过命名空间f,都能找到唯一一个对象与之对应。
python变量名的创建、修改和查找都是在命名空间进行的。
python有三种命名空间:
序号 | 命名空间 | 描述 |
1 | 内置命名空间(built-in name) | python语言内置名称,比如函数名称print、abs等 |
2 | 全局命名空间(global-name) | 模块级变量、函数、类、导入的模块及其变量 |
3 | 局部命名空间(local-name) | 函数(或方法)中的变量,函数入参,函数返回值, |
命名空间查找顺序:局部>全局>内置命名空间。找不到则报NameError异常。
命名空间加载顺序:内置>全局>局部(函数调用时生成)。
命名空间销毁顺序:局部>全局>内置命名空间。
locals()当前函数局部命名空间。
globals()当前模块命名空间。
示例
>>> def funct(a=2): b='梯阅线条' print(locals()) return a*b>>> funct(){'a': 2, 'b': '梯阅线条'}'梯阅线条梯阅线条'>>> globals(){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'funct': <function funct at 0x00E41DB0>}
联系客服