python是否有一些未定义的变量/调试模式会输出通知/警告?
PHP允许您修改error_reporting以打开通知警告,这意味着执行
<?php
echo $foo;
将在第2行抛出“Undefined variable foo .......
python有类似的东西吗?
我有一个我正在做的错误
db.connect
而不是
db.connect()
我希望python会抛出一个 未定义的变量连接...
你可以提高python中的错误报告级别或类似内容吗?
答案 0 :(得分:9)
Python抱怨未定义的变量,而不对其warning system进行任何调整:
h[1] >>> print x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
在你的情况下db.connect
实际上有一个值,即一个函数对象。所以你的连接没有定义。
h[1] >>> def hello(): pass
...
h[1] >>> x = hello
h[1] >>> print x
<function hello at 0x100461c80>
答案 1 :(得分:3)
这不是一个未定义的变量。你引用现有方法connect
- 如果没有,你会得到一个NameError
,因为MYYN显示 - 但是你没有打电话给它。就语言而言,这是完全有效的 - 事实上,这种行为(当表达更大的一部分时)有时非常有用。但更不用说,当然没有意义。我认为静态分析工具(例如pylint或PyChecker)可能会抱怨这一点(我不确定,我很少犯这种错误)并且使用它们也不会有任何伤害。
答案 2 :(得分:0)
据我所知,Python中没有这样的选项。但是,有PyChecker之类的工具可以帮助您找到编译器捕获其他语言的错误。
答案 3 :(得分:0)
您可以使用像pylint http://www.logilab.org/project/pylint
这样的工具示例
class A(object):
def fun():
return None
a = A()
a.fun
Pylint片段警告:
R: 2:A.fun: Method could be a function