全局变量导致

2024-10-02 00:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试将变量“checks”声明为全局变量,因为我遇到以下问题:

  File "C:\Python27\Projects\Automatic Installer\autoinstall.py", line 11, in installFunc
    if checks[0] == 1:
NameError: global name 'checks' is not defined

这是我的代码,我尝试在程序主体和installFunc函数中添加全局检查。是否有其他位置我应该添加它/其他方式来指示检查应该包含程序中的信息?在

^{pr2}$

Tags: inpy程序声明iflineinstallerautomatic
3条回答

将第一个“global checks”(全局级别的检查)替换为“global=…”,并对其进行适当的初始化。使用“global”只在函数/方法中才真正相关。根据Python文档:global语句是一个声明,用于保存整个当前代码块。这意味着列出的标识符将被解释为全局标识符。如果没有global就不可能赋值给一个全局变量,尽管自由变量可以引用全局变量而不声明为global。你可能还想读这篇文章-有很多相关的信息:Using global variables in a function other than the one that created them

问题不是第一次“全局检查”。导致错误的原因是在初始化之前访问了检查。在

在调用应用程序的主循环之前,必须初始化检查。在

我认为这是因为checks是在mainloop(发布的代码的最后一行)之后设置的。函数installFunc通过按按钮从主循环调用,但检查尚未定义。在

无论如何,在这种情况下使用全局数据并不是一个好主意。你可能应该做些类似的事情:

def installFunc(checks):
    ...

checks = [variable.get() for variable in variables]
b = Button(text="OK", command=lambda : installFunc(checks))

或者,更棒的是,在课堂上把这一切都总结起来。。。这样你就可以:

^{pr2}$

相关问题 更多 >

    热门问题