我正在尝试用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.
我做错了什么?
答案 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__