你有(至少)两个选择来实现你想要的。在
最好的替代方法是重写inspect.Signature类的__str__方法。但是,由于它是用C编写的,所以它是只读的。在
为此,您需要按如下方式扩展类:class MySignature(inspect.Signature):
def __str__(self):
return '(...)'
然后在定义函数后执行:
^{pr2}$
它将为help(func)返回以下内容:Help on function func in module __main__:
func(...)
(END)
用这种方法检验人签字仍然有效:In [1]: inspect.signature(func)
Out[1]:
或者,如果您不关心是否能够正确地反思您的函数(可能还有其他一些用例),那么您可以将函数的__signature__的值定义为一个不是Signature实例的对象:def func(x, y):
pass
func.__signature__ = object()
help(func)
生成结果:Help on function func in module __main__:
func(...)
(END)
但现在inspect.signature(func)将提高{}。在
注意:这最后一个版本相当老套,我不推荐它。在
有关这两种技术以及签名如何工作的详细信息,请参见PEP 0362。在
更新:
对于Python2.7,可以执行以下操作(使用模拟框架可能更好):In [1]: import inspect
In [2]: def myformatargspec(*args, **kwargs):
...: return '(...)'
...:
In [3]: def func(x, y):
...: pass
...:
In [6]: inspect.formatargspec = myformatargspec
In [7]: help(func)
Help on function func in module __main__:
func(...)
(END)