寻求有关如何防止Python中无情的“NameErrors”的一般建议
我有一个问题,我确信在某些时候,每个中级
Python程序员都会想到这个问题:也就是说,如何修复/阻止/避免/解决那些永远存在且同样令人沮丧的NameErrors.我不是在谈论实际错误(比如拼写错误等),而是一个基本上没有定义全局名称的奇怪问题,而实际上它是进一步定义的.无论出于何种原因,Python似乎在这个领域非常需要:每个变量绝对必须要在上面定义并且只在任何引用它的东西之上(或者看起来如此).
例如: condition = True if condition == True: doStuff() def doStuff(): it_worked = True 让Python给我这个: Traceback (most recent call last): File "C:UsersOwnerDesktopPython projectstest7.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 = True if __name__ == '__main__': main() 这样你只需要确保the (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |