python - 未定义的变量?

时间:2010-10-24 18:47:50

标签: python debugging variables error-reporting

python是否有一些未定义的变量/调试模式会输出通知/警告?

PHP允许您修改error_reporting以打开通知警告,这意味着执行

<?php
echo $foo;

将在第2行抛出“Undefined variable foo .......

python有类似的东西吗?

我有一个我正在做的错误

db.connect

而不是

db.connect()

我希望python会抛出一个 未定义的变量连接...

你可以提高python中的错误报告级别或类似内容吗?

4 个答案:

答案 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显示 - 但是你没有打电话给它。就语言而言,这是完全有效的 - 事实上,这种行为(当表达更大的一部分时)有时非常有用。但更不用说,当然没有意义。我认为静态分析工具(例如pylintPyChecker)可能会抱怨这一点(我不确定,我很少犯这种错误)并且使用它们也不会有任何伤害。

答案 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