|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
函数2
- def 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 小助理,如未能正确解答您的问题,请继续追问。
|
|