python - 未定义的变量?

python - undefined variable?

提问人:Wizzard 提问时间:10/25/2010 最后编辑:SilentGhostWizzard 更新时间:10/25/2010 访问量:12788

问:

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

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

<?php
echo $foo;

将抛出一个“未定义的变量 foo 在第 2 行.......

python 有类似的东西吗?

我在做的时候有一个错误

db.connect

而不是

db.connect()

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

你能在 Python 中提高错误报告级别或类似级别吗?

Python 调试 变量 错误报告

评论

0赞 Vincent Savard 10/25/2010
对我们来说幸运的是,它确实抛出了一个例外。在什么情况下您没有收到错误?在 Python 中,您始终可以创建新属性(例如,db.connect = 1),这可能会欺骗您。

答:

9赞 miku 10/25/2010 #1

Python 抱怨未定义的变量,而没有对其警告系统进行任何调整:

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>
0赞 helpermethod 10/25/2010 #2

据我所知,Python 中没有这样的选项。但是,有一些工具,如 PyChecker,它将帮助您找到在其他语言中被编译器捕获的错误。

3赞 user395760 10/25/2010 #3

这不是一个未定义的变量。你参考现有的方法 - 如果没有,你会得到一个 MYYN 显示的 - 但你不调用它。就语言而言,这是完全有效的——事实上,这种行为(当一个更大的表达的一部分)有时非常有用。但更不用说了,这当然毫无意义。我想 pylintPyChecker 等静态分析工具可能会抱怨这一点(我不确定,我很少犯这种错误),无论如何使用它们都不会有什么坏处。connectNameError

0赞 kevpie 10/25/2010 #4

您可以使用像 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