我有以下函数签名:
# my signature
def myfunction(x, s, c=None, d=None):
# some irrelevant function body
Run Code Online (Sandbox Code Playgroud)
我需要位置参数的数量。如何返回位置参数 (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)
Run Code Online (Sandbox Code Playgroud)
输出:
2
Run Code Online (Sandbox Code Playgroud)
从文档:
__defaults__:包含默认参数值的元组,这些参数具有默认值,或者None如果没有参数具有默认值。
和:
co_argcount是位置参数的数量(包括具有默认值的参数);
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |