如何找到Python函数的参数数量?

如何找到Python函数的参数数量?,第1张

如何找到Python函数的参数数量?


于接受的答案已于
弃用

Python3.0
inspect.getargspec
现在,您应该选择
Signature
取代它的类,而不是使用它。

创建功能的签名是通过简单的

signature
功能:

from inspect import signaturedef someMethod(self, arg1, kwarg1=None):    passsig = signature(someMethod)

现在,您可以通过以下方式快速查看其参数

str

str(sig)  # returns: '(self, arg1, kwarg1=None)'

或者您也可以通过来获取属性名称到参数对象的映射

sig.parameters

params = sig.parameters print(params['kwarg1']) # prints: kwarg1=20

此外,你可以叫

len
sig.parameters
也看到的参数此功能,需要数量:

print(len(params))  # 3

params
映射中的每个条目实际上都是一个具有其他属性的
Parameter
对象,使您的生活更加轻松。例如,现在可以轻松地执行以下 *** 作来获取参数并查看其默认值:

kwarg1 = params['kwarg1']kwarg1.default # returns: None

包含在中的其余对象类似

parameters


对于Python

2.x
用户,虽然
inspect.getargspec
不建议
弃用,但该语言很快就会成为:-)。该
Signature
课程在该
2.x
系列中不可用,也不会提供。因此,您仍然需要使用
inspect.getargspec

至于Python 2和3之间的转换,如果你有一些代码依赖的接口

getargspec
在Python 2切换到
signature
3
是太难了,
你必须将有价值的选择
使用
inspect.getfullargspec
。它提供了与
getargspec
(单个可调用参数)相似的接口,以获取函数的参数,同时还处理某些其他情况,这些
getargspec
情况不是:

from inspect import getfullargspecdef someMethod(self, arg1, kwarg1=None):    passargs = getfullargspec(someMethod)

与一样

getargspec
getfullargspec
返回
NamedTuple
包含参数的。

print(args)FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5035067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存