python如何在非创建全局变量的地方使用全局变量

silencement
发布: 2019-05-27 17:29:28
原创
3252 人浏览过

python如何在非创建全局变量的地方使用全局变量

在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local)、嵌套作用域(Enclosing function locals)、全局作用域(Global)、内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则。 即python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量。

然而当在一个函数内部为一个变量赋值时,并不是按照上面所说LEGB规则来首先找到变量,之后为该变量赋值。在Python中,在函数中为一个变量赋值时,有下面这样一条规则:“当在函数中给一个变量名赋值是(而不是在一个表达式中对其进行引用),Python总是创建或改变本地作用域的变量名,除非它已经在那个函数中被声明为全局变量. ”

python中golbal全局变量和nonlocal局部变量

global关键字用来在函数或其他局部作用域中使用全局变量。

gcount = 0 #定义了一个全局变量,(可以省略global关键字) def global_test(): print (gcount) #不修改,只是引用全局变量,不使用global关键字 def global_counter(): global gcount gcount +=1 #修改全局变量,需要使用global关键字 return gcount
登录后复制

输出

1

2

3

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

def make_counter(): count = 0 #定义一个局部变量,该局部变量作用范围在make_counter()方法内 def counter(): nonlocal count #在方法counter()中使用外层局部变量 count count += 1 return count return counter def make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc()) make_counter_test()
登录后复制

输出

3

以上是python如何在非创建全局变量的地方使用全局变量的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!