我有以下函数签名:
# my signature
def myfunction(x, s, c=None, d=None):
# some irrelevant function body
我需要位置参数的数量。如何返回位置参数 (x & s) 的数量 (2)。关键字参数的数量无关紧要。
最佳答案
可以得到所有参数的个数(使用f.__code__.co_argcount
),关键字参数的个数(使用f.__defaults__
),然后减去后者从一开始:
def myfunction(x, s, c=None, d=None):
pass
all_args = myfunction.__code__.co_argcount
if myfunction.__defaults__ is not None: # in case there are no kwargs
kwargs = len(myfunction.__defaults__)
else:
kwargs = 0
print(all_args - kwargs)
输出:
2
来自Docs :
__defaults__
: A tuple containing default argument values for those arguments that have defaults, orNone
if no arguments have a default value.
和:
co_argcount
is the number of positional arguments (including arguments with default values);
关于python - 计算函数签名中的位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885922/