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是同一个变量

在Python中,`global``nonlocal`关键字都用于在嵌套函数中声明变量的作用域,但它们的作用范围作用对象有所不同。 1. **`global`关键字**: - 用于声明一个变量是全局变量。 - 允许在函数内部修改全局变量的值。 - 如果在函数内部直接赋值给一个变量,而这个变量在全局作用域中存在,那么这个变量会被认为是局部变量,除非使用`global`关键字声明。 2. **`nonlocal`关键字**: - 用于声明一个变量是外层(非全局)函数的局部变量。 - 允许在嵌套函数中修改外层函数的局部变量的值。 - 如果在嵌套函数中直接赋值给一个变量,而这个变量在外层函数中存在,那么这个变量会被认为是嵌套函数的局部变量,除非使用`nonlocal`关键字声明。 ### 示例代码 ```python # 使用global关键字 x = 10 # 全局变量 def modify_global(): global x x = 20 # 修改全局变量 modify_global() print(x) # 输出20 # 使用nonlocal关键字 def outer_function(): y = 10 # 外层函数的局部变量 def inner_function(): nonlocal y y = 20 # 修改外层函数的局部变量 inner_function() print(y) # 输出20 outer_function() ``` 在上述代码中: - `global`关键字用于在函数内部声明`x`是全局变量,从而可以在函数内部修改全局变量的值。 - `nonlocal`关键字用于在嵌套函数中声明`y`是外层函数的局部变量,从而可以在嵌套函数中修改外层函数的局部变量的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值