Python命名空间和作用域的基本认识和一点小魔法

作为初学者,简单总结自己对Python命名空间(namespace)和作用域(scope)的认识。

Python在名称空间搜寻变量和函数的顺序可以认为是:

函数内部 -> (嵌套)父函数内部 -> 模块内部 ->  built_in内置模块

1. 函数内部(local)

简单举例说明:

x = 123

def func():
    x = 456
    print 'inner x =', x

func()
print 'outer x =', x

输出:

inner x = 456
outer x = 123

模块级变量x的值是123,而在函数func内部,local变量x的值是456。可以看到,函数是没有改变外部x的值的。

2. 父函数内部 继续阅读Python命名空间和作用域的基本认识和一点小魔法