gpt4 book ai didi

python从外部访问主程序变量

转载 作者:行者123 更新时间:2023-11-30 23:06:12 29 4
gpt4 key购买 nike

我是Python新手,想知道为什么它可以从外部访问主程序中定义的变量,但不能在自定义函数中访问。

def f():
print(l)

if __name__ == '__main__':
l = [1,2,3]
f() # output: [1,2,3]

但在函数中执行时遇到错误

def f1():
l1 = [1,2,3]
f2()

def f2():
print(l1) # error: global name 'l1' is not defined

if __name__ == '__main__':
f1()

第一个例子真的让我很困惑,AFAIK,这是 C/C++ 或其他一些语言的错误,因为我们不能引用 undefined variable 。那么为什么它在这里是合法的,而为什么第二个例子不合法呢?

最佳答案

if block 没有限定变量的作用域,它只是有条件地声明它。如果您的程序作为 __main__ 运行(即正在执行的主脚本),则 l 将被声明为全局范围变量,因此在 f< 时可用 被执行。它等同于:

if True:
l = []

def f1():
print(l)

这与:

相同
l = []

def f1():
print(l)

l 是在函数之前还是之后声明并不重要,重要的是它是在函数体执行时声明的。

但是,在函数 f1 内声明变量会将其范围限定为 f1

关于python从外部访问主程序变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756394/

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