gpt4 book ai didi

python - 在定义的函数中识别/接受的非全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:17 24 4
gpt4 key购买 nike

我正在学习和尝试Python,我意外地发现了这个(对我来说)非常奇怪的情况。我尽可能多地搜索,但除了如何使用全局和局部变量或如何使用“for”循环之外,找不到任何其他内容。我有以下代码(Android Qpython3 上的 Python 3.2),为简单起见进行了修改:

def get_number():
x=5**i
print(x)
return(x)

for i in range(1,5):
y=get_number()
print(y)

我意识到我在被调用函数中使用变量 i 时犯了一个错误,因为我没有将其定义为全局变量。然而,当我运行该脚本时,它起作用了(!),给出了以下输出:

hon.sh "/storage/emulated/0/com.hipipal.qpyplus/scripts3/AK_SCRIPTS/.last_tmp.py" && exit               <
5
5
25
25
125
125
625
625

#[QPython] Press enter to exit

有人可以解释一下变量 i 如何/为什么在被调用函数中被识别并具有调用函数中的值,即使它没有定义为全局?

最佳答案

变量的作用域解析遵循 LEGB 规则,即 python 尝试在以下作用域中查找变量(优先级递减):

本地 -> 封闭 -> 全局 -> 内置

在您的情况下,i 仅在封闭的范围内定义。

有关更多详细信息,请参阅http://spartanideas.msu.edu/2014/05/12/a-beginners-guide-to-pythons-namespaces-scope-resolution-and-the-legb-rule/

关于python - 在定义的函数中识别/接受的非全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com