python - 未定义变量?

1 投票
4 回答
12941 浏览
提问于 2025-04-16 06:01

Python有没有一种未定义变量或调试模式,可以输出通知或警告呢?

在PHP中,你可以修改错误报告的设置,打开通知警告,这样就能看到类似这样的提示:

<?php
echo $foo;

这会在第2行抛出一个“未定义变量foo...”的错误。

那么,Python有没有类似的功能呢?

我遇到过一个bug,当时我写的是:

db.connect

而不是:

db.connect()

我希望Python能抛出一个“未定义变量connect...”的错误。

在Python中,你能提高错误报告的级别或者类似的设置吗?

4 个回答

0

据我所知,Python里没有这样的选项。不过,有一些工具,比如PyChecker,可以帮助你找到代码中的错误,这些错误在其他编程语言中通常是由编译器发现的。

3

这并不是一个未定义的变量。你提到了一个已经存在的方法 connect,如果这个方法不存在,你会看到一个 NameError 的错误,就像 MYYN 所显示的那样。但你并没有调用这个方法。从语言的角度来看,这样做是完全合法的——实际上,当它作为更大表达式的一部分时,这种行为有时非常有用。不过,单独来看,这样做当然是没什么意义的。我想像 pylintPyChecker 这样的静态分析工具可能会对此提出警告(不过我不太确定,因为我很少犯这种错误),但使用这些工具总是有好处的。

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实际上是有值的,它是一个函数对象。所以你的连接并不是未定义的。

h[1] >>> def hello(): pass
     ... 
h[1] >>> x = hello
h[1] >>> print x
<function hello at 0x100461c80>

撰写回答