在处理足够大的 python 文件时,我不小心在全局范围内重新定义了一个函数。如果 python 解释器能在这些情况下警告我,我将不胜感激。
想象一下,您从以下代码开始(版本 1):
#!/usr/bin/env python
... lots of code ...
def foo(version):
if version == 1:
return "Correct"
return "Oops!"
... lots more code ...
print foo(1)
哪个工作正常:
Correct
然后你想改变一些东西,把它叫做版本 2。你重写了 foo 函数,但是你要么没有意识到旧的存在,要么你忘记了删除它。你最终得到这个:
#!/usr/bin/env python
def foo(version):
if version == 2:
return "Correct"
return "Oops!"
... lots of code ...
def foo(version):
if version == 1:
return "Correct"
return "Oops!"
... lots more code ...
print foo(2)
哪个不太好用:
Oops!
我知道python允许这样的代码:
def monkey():
return "patching"
monkey = "is"
def monkey():
return {"really": "fun"}
但似乎以这种方式使用“def”是不好的做法。
有什么办法可以得到这种行为:
#!/usr/bin/env python --def-strict
def foo():
pass
def foo():
pass
结果是:
Traceback (most recent call last):
File ..., line 3, in <module>
NameError: name 'foo' is already defined