1

Pythonには、通知/警告を出力する未定義の変数/デバッグモードがありますか?

PHPでは、error_reportingを変更して、通知警告をオンにすることができます。

<?php
echo $foo;

2行目に「未定義の変数foo」をスローします。

Pythonには似たようなものがありますか?

私がやっていたところにバグがありました

db.connect

それ以外の

db.connect()

そして私はPythonが未定義の変数connectをスローすることを望んでいました...

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実際には値、つまり関数オブジェクトがあります。したがって、接続は未定義ではありません。

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-存在しない場合は、NameErrorMYYNが示すようにを取得します-しかし、それを呼び出さないでください。言語に関する限り、これは完全に有効です。実際、この動作(より大きな式の一部である場合)は非常に役立つ場合があります。しかし、言うまでもなく、それは無意味です。pylintPyCheckerなどの静的分析ツールがこれについて不平を言うかもしれないと思います(私はよくわかりませんが、この種の間違いをすることはめったにありません)、とにかくそれらを使用しても害はありません。

于 2010-10-24T18:55:41.630 に答える
0

私の知る限り、Pythonにはそのようなオプションはありません。ただし、PyCheckerのようなツールがあり、他の言語でコンパイラーによって検出されたバグを見つけるのに役立ちます。

于 2010-10-24T18:53:20.843 に答える
0

pylinthttp://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
于 2010-10-24T19:08:00.833 に答える