gpt4 book ai didi

python - 变量没有传递到较低级别?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:12 25 4
gpt4 key购买 nike

我知道 python 中的变量总是(?)在子函数中可用。

这就是它起作用的原因:

def abc():
print(a)

def main():
abc()
pass

if __name__=='__main__':
a = 'a'
main()

但是,如果将 a 的定义移至 main() 中,为什么它不起作用?

def abc():
print(a)

def main():
a = 'a'
abc()
pass

if __name__=='__main__':
main()

它在使用之前仍然被定义并且应该在 abc() 中可用,对吧?

最佳答案

不,函数中定义的变量默认作用于函数。要使其在 abc() 中可用,您需要将其设为 global:

def main():
global a
a = 'a'
abc()

至于“隐藏”警告,当您在内部范围内重新定义名称时会收到它。例如,这段代码创建了一个全局变量a:

if __name__ == '__main__':
a = 'a'
main()

现在,如果您在 main() 中执行 a = 'b',您实际上是通过创建从外部作用域“隐藏”a具有相同名称的局部变量。

关于python - 变量没有传递到较低级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559918/

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