这篇文章将为大家详细讲解有关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)
#打印全局变量x
print(x)
#使用关键字global将函数内的局部变量变成全局
def test():
global x
x = 'local x'
print(x)#调用局部变量
#调用函数
test() #local x
#打印全局变量x
print(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中变量范围作用域是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。