web-dev-qa-db-ja.com

python "help"関数:docstringの出力

Help( 'myfun')の出力を出力するオプションはありますか?私が見ている動作は、出力がstd.outに出力され、スクリプトがユーザー入力を待機することです(つまり、「q」と入力して続行します)。

Docstringをダンプするようにこれを設定する設定が必要です。

あるいは、docstringに加えて「deff(args):」行をダンプできれば、それでも問題ありません。

「Pythonヘルプ関数」の検索はコミカルです。 :)たぶん、それをすべて説明している素敵なpydocページがどこかにありませんか?

16
mathtick

help(str)によって変数strhelpに出力されるヘルプを正確に取得するには:

import pydoc
strhelp = pydoc.render_doc(str, "Help on %s")

もちろん、ページングなどを行わなくても簡単に印刷できます。

17
kindall

ヘルプの本文を保持する魔法の__doc__変数であるdocstringへの参照はすでに見ました。

def foo(a,b,c): 
   ''' DOES NOTHING!!!! '''
   pass

print foo.__doc__ # DOES NOTHING!!!!

関数の名前を取得するには、__name__を使用するだけです。

def foo(a,b,c): pass

print foo.__name__ # foo

組み込まれていない関数のシグネチャを取得する方法は、func_codeプロパティを使用でき、そこからそのco_varnamesを読み取ることができます。

def foo(a,b,c): pass
print foo.func_code.co_varnames # ('a', 'b', 'c')

組み込み関数に対して同じことを行う方法がわかりません。

4
cwallenpoole

コードから生のdocstringにアクセスする場合:

   myvar = obj.__doc__
   print(obj.__doc__)

ヘルプ関数はいくつかの追加処理を行います。受け入れられた回答は、pydoc.render_doc()を使用してこれを複製する方法を示しています。

4
Jürgen Strobel
_>>> x = 2
>>> x.__doc__
'int(x[, base]) -> integer\n\nConvert a string or number to an integer, if possi
ble.  A floating point\nargument will be truncated towards zero (this does not i
nclude a string\nrepresentation of a floating point number!)  When converting a
string, use\nthe optional base.  It is an error to supply a base when converting
 a\nnon-string. If the argument is outside the integer range a long object\nwill
 be returned instead.'
_

それはあなたが必要としたものですか?

編集-print(x.__doc__)が可能で、関数シグネチャに関しては、inspectモジュールを使用してビルドできます。

_>>> inspect.formatargspec(inspect.getargspec(os.path.join))
'((a,), p, None, None)'
>>> help(os.path.join)
Help on function join in module ntpath:

join(a, *p)
    Join two or more pathname components, inserting "\" as needed
_
2
ubershmekel