0

「Dive Into Python」を始めたばかりです。何らかの理由で、表示するドキュメント文字列を取得できません。

#!/usr/bin/env python

def buildConnectionString(params):
    """Build a connection string from a dictionary of parameters
    """
    # Returns string
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

if __name__ == "__main__":
    myParams = {"server":   "mpilgrim", \
                "database": "master",   \
                "uid":      "sa",       \
                "pwd":      "secret"    \
                }
    print buildConnectionString(myParams)

コンソールで:

>>> import odbchelper
>>> print odbchelper.buildConnectionString.__doc__
None
>>> 

これはうまくいきます:

>>> import sys
>>> sys.path.__doc__
"list() -> new empty list\nlist(iterable) -> new list initialized from iterable's items"
>>> 

"""#コメントを含む多くの順列を試しました。喜びはありません。問題はどこだ?

4

1 に答える 1

2

あなたが持っているものはうまくいくはずです。そうでないいくつかの考えられる理由:

  • 別のファイルを編集しています
  • 正しいファイルを編集した後、インタープリターを終了して再起動していない

アップデート:

インタープリター (または IDLE または使用しているもの) の終了と再起動を回避するために使用する場合reloadは、いくつかの落とし穴に注意する必要があります。

  • reload再帰的ではない

つまり、あなたのodbchelperインポートodbcstuffとあなたreload(odbchelper)の場合、odbcstuffリロードされません。

  • reload他の既存のオブジェクトを更新しません

reloadwithの非再帰的な性質を回避しようとする場合

import odbcstuff
reload(odbcstuff)

odbcstuff見えるものはodbchelperまだ古いものです。もう 1 つの手順が必要です。

odbchelper.odbcstuff = odbcstuff     # update odbchelper with the reloaded odbcstuff

ご覧のとおり、依存モジュールが 2 つ以上ある場合、これは非常に面倒です。先に進んで を使​​用しますreloadが、それでも正しく動作しない場合は、終了して再起動してください。

于 2013-01-23T02:37:21.163 に答える