#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')
дает.