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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法