1

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

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

<?php
echo $foo;

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

python有类似的东西吗?

我在做的地方有一个错误

db.connect

代替

db.connect()

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

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

4

4 回答 4

9

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

h[1] >>> print x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

在您的情况下,db.connect实际上有一个 value,即一个函数对象。所以你的连接不是未定义的。

h[1] >>> def hello(): pass
     ... 
h[1] >>> x = hello
h[1] >>> print x
<function hello at 0x100461c80>
于 2010-10-24T18:50:42.747 回答
3

这不是一个未定义的变量。你指的是现有的方法connect——如果没有,你会得到一个NameError如 The MYYN 显示的——但你没有调用它。就语言而言,这是完全有效的——事实上,这种行为(当成为更大表达式的一部分时)有时非常有用。但更不用说,这当然是没有意义的。我想像pylint或PyChecker这样的静态分析工具可能会抱怨这一点(不过我不确定,我很少犯这种错误)并且无论如何使用它们都不会受到伤害。

于 2010-10-24T18:55:41.630 回答
0

You can use a tool like pylint http://www.logilab.org/project/pylint

Example

class A(object):
    def fun():
        return None

a = A()
a.fun

Pylint snippet warning:

R:  2:A.fun: Method could be a function
于 2010-10-24T19:08:00.833 回答
0

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

于 2010-10-24T18:53:20.843 回答