说我有以下内容:
def foo(arg1, arg2, arg3 = default, *args, *kwargs*):
"""This function is really cool."""
return
如何定义新功能functionprinter(f)
以便functionprinter(f)
打印
foo(arg1, arg2, arg3 = default, *args, *kwargs*)
This function is really cool.
或那种性质的东西?我已经知道foo.__name__
和foo.__doc__
已经看过inspect
模块,特别是Getting method parameter names in python,但似乎无法将所有内容串在一起,特别是默认情况下参数打印正确。我使用的是Python 3.4.1。
答案 0 :(得分:2)
烨!您可以使用inspect模块:
import inspect
def foo(arg1, arg2, arg3=None , *args, **kwargs):
"""This function is really cool."""
return
def functionprinter(f):
print("{}{}".format(f.__name__, inspect.signature(f)))
print(inspect.getdoc(f))
functionprinter(foo)
打印:
foo(arg1,arg2,arg3 =无,* args,** kwargs)
这个功能真的很酷。
请注意,我将default
参数更改为None
仅用于此演示,因为我没有定义变量default
。
答案 1 :(得分:1)
您可以使用inspect.signature
(表示可调用对象的调用签名及其返回注释。)和inspect.getdoc
:
>>> print(inspect.signature(foo))
(arg1, arg2, arg3=3, *args, **kwargs)
>>> inspect.getdoc(foo)
'This function is really cool.'
>>> print ('\n'.join((foo.__name__+str(inspect.signature(foo)),inspect.getdoc(foo))))
foo(arg1, arg2, arg3='', *args, **kwargs)
This function is really cool.