global和nonlocal的区别

#global 定义全局变量

#以下是普通的调用函数
name=100
def hanshu():
name=80
def hanshu1():
name=20
print(‘最里边的是’,name) #最里边的是 20
hanshu1()
print(‘中间的这个是’,name) #中间的这个是 80
hanshu()
print(‘最外边的这个是’,name) #最外边的这个是 100

name=100
def hanshu2():
global name
name=80
def hanshu3():
name=20
print(‘最里边的是’,name) #最里边的是 20
hanshu3()
print(‘中间的这个是’,name) #中间的这个是 80
hanshu2()
print(‘最外边的这个是’,name) #最外边的这个是 80

#所以得出如下结论
#global用于定义全局变量,如果变量是局部的变量,那么就可以把这个局部变量定义成全局变量
#函数运行时读取变量是优先读取局部变量的,如果没有,就往外一层层读取,知道找到变量值

#nonlocal 定义局部变量
count = 1
def a():
count = ‘okok’
def b():
nonlocal count
print(count) # okok
count = 2
b()
print(count) # 2
if name == ‘main’:
a()
print(count) # 1

#由此可以得出以下结论
#nonlocal用于定义局部变量,可以把这个全局变量定义成局部变量
#nonlocal只能在封装函数中使用,只对所在的封装函数中起作用,定义前,在外部函数先进行声明,在内部函数进行nonlocal声明,
#这样在b()函数中的count与a()中的count是同一个变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值