作为初学者,简单总结自己对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的值的。