全局变量与局部变量
第一个例子:>>> def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 3
inside()
>>> outside()
5
第二个例子:
>>> def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 3
return var
inside()
>>> outside()
5
【我的问题】
1、两个例子中var = 3好像都没有作用,无论是否是否有无return var,运行的结果都是一样的,都是返回5
2、如果希望返回的值是3,应如何修改代码呢? 1、这是因为在第一个例子中,虽然在inside函数中将var的值修改为3,但是并没有返回这个值,所以outside函数中的var仍然是原来的值5;在第二个例子中,虽然在inside函数中将var的值修改为3并返回这个值,但是outside函数并没有接收这个返回值,所以仍然输出原来的值5。
2、如果希望返回的值是3,需要在outside函数中接收inside函数的返回值,并将其作为outside函数的返回值。修改代码如下:
def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 3
return var
return inside()
print(outside())# 输出3
在这个修改后的代码中,我们将inside函数的返回值作为outside函数的返回值,这样就可以输出3了。 因为在print()以前修改的var呀,你第二次运行outside就不一样了
另外第二个只有inner输出并返回,可是在outside里没用啊,outside最后改成
return inside() 对于第一个例子,虽然在inside函数内部将nonlocal var赋值为3,但是由于没有return var导致函数最终返回的结果还是外部函数中的var,即5。
对于第二个例子,虽然在inside函数内部将nonlocal var赋值为3,但是这里的return var并没有被外部函数outside捕获,因此最终函数返回了None。
如果想要让函数返回3,可以使用return语句将inside函数内部的var返回给outside函数。修改代码如下:
def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 3
return var
return inside()
print(outside()) # 输出:3
这样,在调用outside函数时,会先执行inside函数,将inside函数内部的var赋值为3,并将其返回给outside函数。在返回结果3之前,也会打印出inside函数内部的var的值,即输出3。 isdkz 发表于 2023-5-15 18:03
1、这是因为在第一个例子中,虽然在inside函数中将var的值修改为3,但是并没有返回这个值,所以outside函数 ...
我测试了一下,顺便纠正一下大神:
>>> def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 3
return var
return inside()
>>> outside()
5
3
>>> print(outside())
5
3
无论是 outside(),还是print(outside()),都是返回:
5
3
而不是单单输出一个3哦 lzb1001 发表于 2023-5-15 18:25
我测试了一下,顺便纠正一下大神:
>>> def outside():
5是在函数里输出的。而3是返回值,在函数外输出
他确实讲错了,不过两者有区别 认真学习全局变量和局部变量,之前看完没弄明白。 搞清概念
页:
[1]