例如:
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”的一般建议所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)