马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
B站第44讲,函数IV。请教一下,为什么函数1可以,函数2却不行?谢谢! 代码如下:
函数1>>> def funA():
... x = 520
... def funB():
... x = 880
... print("In funB, x=", x)
... funB()
... print("In funA, x=", x)
...
...
>>> funA()
In funB, x= 880
In funA, x= 520
函数2def funA():
return 520
def funB():
return 880
print(funB, x)
funB()
print(funA, x)
funA()
520
funB()
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
funB()
NameError: name 'funB' is not defined. Did you mean: 'funA'?
好的,让我们来修复函数2,使它像函数1一样,顺利地输出结果!我们要确保 `funB()` 在 `funA()` 的返回之前被定义和调用。这里有一个简单的修改:
def funA():
x = 520 # 定义 x
def funB():
x = 880 # 定义局部的 x
print("In funB, x=", x) # 打印局部的 x
funB() # 调用 funB()
print("In funA, x=", x) # 打印外部的 x
return x # 返回 x,以便我们可以显示它
funA() # 最后调用 funA()
在这个版本中,我们把 `return 520` 移除了,因为我们希望在 `funA()` 中先运行 `funB()`,然后打印出两个不同作用域里的 `x` 值。执行后的结果会是:
In funB, x= 880
In funA, x= 520
这样就完美了!现在,这个函数既能正常调用内部的 `funB()` 也能通过外部的 `x` 输出。就像你第一次见到这两位朋友,终于成功地让他们聚在一起了,多么美妙的时刻啊!如果你把 `return` 放回去,确保它在所有打印操作之后,就能把 `x` 的值返回给调用者。
希望这个改动让你的函数和变量之旅更加畅快!如果还有其他问题,尽管问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|