有没有选项打印help()的输出?

20 投票
4 回答
32937 浏览
提问于 2025-04-16 23:57

有没有办法直接打印出help('myfun')的输出?我发现的情况是,输出会显示在标准输出上,然后脚本会等待用户输入(也就是说,需要输入'q'才能继续)。

应该有个设置可以让它只显示文档字符串。

另外,如果我能直接显示文档字符串加上"def f(args):"这一行,那也可以。

搜索“python help function”真是让人哭笑不得。:) 也许我错过了某个很棒的pydoc页面,能把这些都解释清楚?

4 个回答

5

你已经看到过文档字符串的相关内容,它是一个神奇的变量 __doc__,里面保存了帮助信息的内容:

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')

不过,我还没有找到如何对内置函数做同样的事情。

7

如果你想从代码中获取原始的文档字符串:

   myvar = obj.__doc__
   print(obj.__doc__)

help函数会做一些额外的处理,接受的答案展示了如何用pydoc.render_doc()来实现这个功能。

26

如果你想把 help(str) 打印出来的帮助信息放到一个叫 strhelp 的变量里,可以这样做:

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

这样你就可以很方便地打印出来,不用分页什么的。

撰写回答