即使代码中有拼写错误,Python还是可以构建吗?

问题描述

| (注意:我是Python的新手) 我在函数调用中遇到了错字,并且构建了项目,但是在用错字打到函数调用时在运行时崩溃了。 这正常吗?构建不应该失败吗?我设置正确吗? 我正在Linux Centos上使用Eclipse。 Eclipse确实会检测其他错误(缩进,未定义的变量(即,如果foo :,而从未声明过foo则导致构建错误,等等) 这是我的东西的样子:
def foo(self):
   pass

def bar(self):
   foe() 
->
foe
而不是
foo
->不会产生编译错误,但是(当然)在运行时崩溃 我可以理解,Python有时在运行时之前不知道变量的类型,但是当我调用该类中甚至不存在的函数时,它无法检测到它? 我希望我的设置有很大的问题,否则,我恐怕会错过Java,C和所有其他静态类型的语言;))))     

解决方法

实际上,PyLint会检测到该错误,因此,如果您使用的是带有PyDev插件的Eclipse,它将用
foe()
标记为错误。   PyDev当前可以找到:         未定义的变量   导入中未定义的变量   未使用的变量   未使用的进口   未使用的野生进口   签名重复   导入重新定义   未解决的进口   没有在类方法中声明\ self令牌   缩进与制表符和空格混合   缩进错误(缩进时空格数量不正确)。        ,不,它无法检测到。 它是动态的和解释性的。实际上,您可以在运行时将函数添加到类中-或导入模块-这样就无法轻松检测到该函数是否存在。     ,Python不是用C来“构建”的。可以在Python中动态创建函数。将
def foo():
视为在函数表中添加条目an2ѭ。调用函数时,Python在表中查找该函数名称。如果不存在,则会出现运行时错误。这是设计使然。您仍然会收到错误消息,尽管实际上是在调用未知函数时才会出现。     ,在运行程序之前,Python不会编译。因此,很难谈论“编译时”。     ,您必须使用第三方工具来检查所谓的编译错误。查看此问题(和答案)以及PyChecker或PyLint。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...