2013-01-23 27 views
0

剛開始使用「潛入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" 
>>> 

我嘗試了一些permuations,包括"""#意見。沒有快樂。哪裏有問題?

+0

'print buildConnectionString .__ doc__'有什麼問題? – Volatility

+0

你是怎麼在控制檯上調用你的翻譯器的? – Keith

+1

(1)它看起來像你使用製表符縮進(4空間通常更好。)你可以通過運行'python -tt odbchelper.py'來檢查你的代碼嗎? (2)什麼'import inspect'然後'打印inspect.getsource(odbchelper.buildConnectionString)'show? – DSM

回答

2

你應該有什麼工作;一些可能的原因是沒有:

  • 您正在編輯不同的文件
  • 你還沒有退出,編輯正確的文件

更新之後重新啓動了解釋:

如果您使用reload以避免退出並重新啓動解釋程序(或IDLE或您正在使用的任何程序),您需要注意幾個缺陷:

  • reload不是遞歸

換句話說,如果你的odbchelper進口odbcstuffreload(odbchelper)odbcstuff不會重載。

  • reload如果試圖繞過的reload非遞歸性與

    import odbcstuff 
    reload(odbcstuff) 
    

    odbcstuffodbchelper看到不更新現有的其他對象

仍然是舊的;你需要一個步驟:

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

正如你所看到的,這將是一個多對夫婦依賴模塊相當繁瑣。因此請繼續使用reload,但如果事情仍不能正常工作,請退出並重新啓動。

+0

我想我根據你的回答找出答案。編輯完成後,我會保存並導入odbchelper,而不必重新加載(odbchelper) –

相關問題