寻求有关如何防止Python中无情的“NameErrors”的一般建议

寻求有关如何防止Python中无情的“NameErrors”的一般建议,第1张

概述我有一个问题,我确信在某些时候,每个中级 Python程序员都会想到这个问题:也就是说,如何修复/阻止/避免/解决那些永远存在且同样令人沮丧的NameErrors.我不是在谈论实际错误(比如拼写错误等),而是一个基本上没有定义全局名称的奇怪问题,而实际上它是进一步定义的.无论出于何种原因,Python似乎在这个领域非常需要:每个变量绝对必须要在上面定义并且只在任何引用它的东西之上(或者看起来如此) 我有一个问题,我确信在某些时候,每个中级 Python程序员都会想到这个问题:也就是说,如何修复/阻止/避免/解决那些永远存在且同样令人沮丧的nameErrors.我不是在谈论实际错误(比如拼写错误等),而是一个基本上没有定义全局名称的奇怪问题,而实际上它是进一步定义的.无论出于何种原因,Python似乎在这个领域非常需要:每个变量绝对必须要在上面定义并且只在任何引用它的东西之上(或者看起来如此).

例如:

condition = Trueif condition == True:    doStuff()def doStuff():    it_worked = True

让Python给我这个:

Traceback (most recent call last):  file "C:\Users\Owner\Desktop\Python projects\test7.py",line 4,in <module>    doStuff()nameError: name 'doStuff' is not defined

但是,WAS定义了这个名称,而不是Python显然想要它的地方.所以对于像doStuff()这样俗气的小函数来说,这没什么大不了的.只需将功能剪切并粘贴到满足系统对特定订单要求的区域即可.但是当你尝试用它来实际设计一些东西时,它几乎不可能组织代码(我必须“解组”大量的代码来容纳这个BUG).我从来没有遇到过我写过的任何其他语言的问题,所以它似乎特定于Python …但无论如何我在文档中研究了这个并且没有找到任何解决方案(甚至是潜在的导致可能的解决方案)所以我会感谢任何提示,技巧,变通方法或其他建议.

它可能就像学习特定的组织结构一样简单(比如某种“Pythonic”和解决BUG的非常具有战略性的方法),或者只是使用大量的import语句,因此组织它们会更容易.特定的顺序将阻止系统起作用……

解决方法 避免在顶层编写代码(声明除外),在要直接执行的文件中使用main()函数:

def main():    condition = True    if condition:        do_stuff()def do_stuff():    it_worked = Trueif __name__ == '__main__':    main()

这样你只需要确保the if..main construct跟随main()函数(例如将它放在文件的末尾),其余的可以是任何顺序.在执行main()时,将完全解析文件(因此可以解析模块中定义的所有名称).

总结

以上是内存溢出为你收集整理的寻求有关如何防止Python中无情的“NameErrors”的一般建议全部内容,希望文章能够帮你解决寻求有关如何防止Python中无情的“NameErrors”的一般建议所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存