Хранить содержимое help() в переменной: Python

#python #pydoc

#питон #pydoc

Вопрос:

Когда мы используем функцию help(), она просто отображает текст, и я не могу сохранить его в переменной…

 h = help ( 'eval' ) # Doesn't work
 

Итак, что мне делать? И если мне нужно использовать PyDoc, как мне это сделать?

Ответ №1:

Простой способ использовать __doc__ атрибут, как сказал @Thomas

Если вы хотите получить точный результат, как то, что help(something) дает, тогда используйте

 import contextlib
import io

out_io = io.StringIO()

with contextlib.redirect_stdout(out_io):
    help(eval)

out_io.seek(0)
# out has what you're looking for
out = out_io.read()
 

Объяснение:

contextlib.redirect_stdout временно исправляет sys.stdout для любого файла, подобного объекту, который вы передаете

Мы передаем StringIO объект как файлоподобный объект, и он получает напечатанное значение, записанное в него

Затем, наконец StringIO , объект возвращается к началу и считывается с

Ответ №2:

__doc__ Атрибут — это то, что вы ищете:

 >>> h = eval.__doc__
>>> h
'Evaluate the given source in the context of globals and locals.nnThe source may be a string representing a Python expressionnor a code object as returned by compile().nThe globals must be a dictionary and locals can be any mapping,ndefaulting to the current globals and locals.nIf only globals is given, locals defaults to it.'
 

Комментарии:

1. Результат не совпадает с тем, что help('eval') дает.