Python命名空间及作用域原理实例解析
Python命名空间和作用域
总结
emmm,这一块讲了2个内容,一个是命名空间,一个是作用域。一个一个说吧
命名空间
Anamespaceisamappingfromnamestoobjects.MostnamespacesarecurrentlyimplementedasPythondictionaries
python的命名空间细分的话有三种。如图所示。
这一部分没什么好说的,重要的是理解其概念
作用域
AscopeisatextualregionofaPythonprogramwhereanamespaceisdirectlyaccessible."Directlyaccessible"heremeansthatanunqualifiedreferencetoanameattemptstofindthenameinthenamespace.
由官方文档可以看出,作用域就是可以直接访问的区域。就是全局到局部。这里举个代码例子就行了。
#demo.py global_var='haha'#定义全局变量 deftool(): local_var='local'#局部变量 print(local_var)#访问局部变量,可以访问 print(global_var)#访问全局变量,可以访问 print(local_var)#访问局部变量,找不到,无法访问
这一部分的惊喜知识是跟作用域有关的。学到了2个关键字global和nonlocal
global_var='haha'#定义全局变量 deftool(): global_var='22' print(global_var) print(global_var)#访问全局变量,可以访问 tool()
这段代码输出了2个global_var。输出结果是不一样的。tool函数里在局部修改了global_var的值,并不影响全局。此时如果你想影响全局,你就需要用到关键字global.
global_var='haha'#定义全局变量 deftool(): globalglobal_var global_var='22' print(global_var) tool() print(global_var)
这样就好了。
nonlocal作用类似,用来修改嵌套作用域的。
deftool(): var=1 definner(): nonlocalvar var=2 print(var) inner() print(var) tool()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。