【发布时间】:2011-05-26 15:05:52
【问题描述】:
(注意:我是 Python 新手)
我在函数调用中出现拼写错误,项目已构建,但在运行时因拼写错误触发函数调用而崩溃。
这正常吗?!构建不应该失败吗?我的设置正确吗?!
我在 Linux Centos 上使用 Eclipse。
Eclipse 确实检测到其他错误(缩进、未定义变量(即如果 foo:、之前从未声明过 foo 会导致构建错误等)
这是我的东西的样子:
def foo(self):
pass
def bar(self):
foe()
-> foe 而不是 foo -> 不会产生编译错误,但(当然)会在运行时崩溃
我可以理解 Python 有时在运行时之前不知道变量的类型,但是当我调用一个在类中甚至不存在的函数时它不能检测到它吗??!!
我希望我的设置有很大的错误,否则,我恐怕会错过 Java、C 和所有其他静态类型语言;))))
【问题讨论】:
-
如果您想要静态,请使用静态语言。 Python 是完全动态的,这是后果之一。但是,您不应该因此而扔毛巾。我的意思是,无数人设法编写工作 Python 代码,而且他们至少不比使用静态语言工作的人更有效率。只要花点时间习惯这些优势,您可能会发现它们超过(或至少收支平衡)功能动态性成本。
-
如果这两个函数在一个类中。 foe() 应该用 self.foe() 调用。如果你已经设置了 PyDev 插件。它应该被标记为错误。