询问用户的功能名称,然后打印.__ doc__,不能正常工作

时间:2017-03-04 14:25:36

标签: python

我正在尝试用Python创建一个脚本,在执行时,要求用户输入一个函数名并打印函数.__doc__ 例如:

>>> print abs.__doc__
abs(number) -> number

Return the absolute value of the argument.

问题是,它不适用于raw_input。以下是我的代码以及执行时会发生什么。 代码:

f = raw_input("Your function: ")
print f.__doc__

执行:

Your function: abs
str(object='') -> string

Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您要求打印__doc__ f f'abs'就像'abs'.__doc__一样。所以你打电话给__doc__,这是一个字符串的func = getattr(__builtins__,f) print func.__doc__

现在您可以使用以下命令查询内置函数:

globals()

但这仅适用于内置函数。您还可以查找分别存储全局变量和局部变量的字典locals()^([^%\n]*?)(?<!\\section{)(?<!\\paragraph{)\b(Astah)\b

答案 1 :(得分:0)

正如其他人所说,您的问题是尝试使用raw_input()的字符串回复作为函数对象。您可以通过调用getattr()来获取函数对象,但是您需要知道它所在的模块。好的,您可以通过全局命名空间查找它,但是有一个更简单的解决方案,只需使用{ {1}}:

pydoc

答案 2 :(得分:-1)

在这种情况下,abs是您查询__doc__的方法。 raw_input正在将输入值转换为字符串,因此您实际执行__doc__的是字符串。

如果您这样做,您会得到相同的结果:

z = ''
print z.__doc__