这篇文章将为大家详细讲解有关python中变量范围作用域是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
今天学习python的量范围作用域,并记录学习过程欢迎大家一起交流分享。
新建一个python文件命名为py3_scope.py,在这个文件中进行操作代码编写:
#变量作用域范围#Local局部变量#Enclosing封闭函数变量,闭包中常见#Global 全局变量#Built-in 内置模块#python中查找一个变量准守LEGB规则#优先从L->E->G-B查找#定义全局变量x = 'global x'#定义函数,y为局部变量#函数内有效def test(): y = 'local y' print(y)#调用局部变量 print(x)#调用全局变量test() #如果直接打印y会报错,因为是局部变量#print(y)#打印全局变量xprint(x)#使用关键字global将函数内的局部变量变成全局def test(): global x x = 'local x' print(x)#调用局部变量#调用函数test() #local x#打印全局变量xprint(x)#local x#函数中参数为局部变量:def test(z): print(z)#调用局部变量test('local z')#如果直接打印z会报错,因为是局部变量#print(z)#嵌套函数中封闭函数变量def outer(): x = 'outer x' def inner(): x = 'inner x' print(x) inner() print(x)#调用函数outer()#inner x#outer x#根据LEGB规则#调用函数outer()#先是执行inner()中的x打印#然后执行outer()x的打印#接下来我们注释掉inner中的x变量def outer(): x = 'outer x' def inner(): #x = 'inner x' print(x) inner() print(x)#调用函数outer()#outer x#outer x#结果是打印两次outer x#调用函数outer()后,首先执行inner()#发现没有local变量,根据LEGB规则,寻找闭包函数中的变量#输出outer()中 x的值#继续调用outer()中x的值,直接打印输出outer x#接下来修改inner()中x的变量为nonlocal#作用域为闭包函数中,不使用全局global修饰#防止影响全局作用域def outer(): x = 'outer x' def inner(): nonlocal x x = 'inner x' print(x) inner() print(x)#调用函数outer()#inner x#inner x#内置模块变量#首先导入内置模块import builtins#查看内置模块中的函数等信息print(dir(builtins))#定义一个函数min()def min(): pass#这里以min()函数获取最小值为例#m = min([1,2,3,4,5])#print(m)#根据变量作用域的LEGB规则,会先去Local中去找#所以运行会出现错误,需要特别注意
关于python中变量范围作用域是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4592685/blog/4440506