关于python的作用域(Scope Resolution)

1、四种作用域及其生命周期:

(1)local(本地局部作用域),即函数中定义的临时变量,当函数结束时,变量的生命周期结束。

(2)enclosed(闭包,嵌套的父级函数的局部作用域),即闭包外层函数的局部变量,外层函数结束,变量的生命周期结束。

(3)global(全局变量),即模块级别定义的变量,模块销毁,变量的生命周期才会结束。

(4)bulit-in(内置函数)是python解释器,虚拟机内置的变量。

搜索变量的顺序是:(1)->(2)->(3)->(4)

2、global关键字的使用

(1)未使用关键字global的情况下,全局变量在局部作用域里默认是只读的(无法修改),如果为其赋值一个新的值,python认为是在当前的局部作用域里创建一个新的“同名”变量

x = 10
def f1():
	x = 20
	print(x)
f1()
print(x)
"""
Output:
20
10
"""

(2)在确认使用全局变量的情况下,但是又没有关键字的情况下,如果试图修改全局变量,会报UnboundLocalError的错误!!!

x = 10
def f1():
	print(x)  # 确认使用外部作用域
	x = 2
#UnboundLocalError: local variable 'x' referenced before assignment

(3)当局部作用域想修改全局变量时,使用关键字global即可

x = 10
def f1():
    global x
	x = 20
	print(x)
f1()
print(x)
"""
Output:
20
20
"""

(4)使用global声明,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值