在Python 3 中是否有可能获得一个函数需要多少个位置参数?
Is it possible to get how many positional arguments does a function need in Python 3?
我正在寻找一种方法来获取函数在 Python 中需要多少个位置参数 3.
像这样:
def a():pass # 0 positional arguments
def b(x):pass # 1 positional argument
def c(x=0):pass # 0 positional arguments
def d(x,y=0):pass # 1 positional argument
def e(x,y):pass # 2 positional arguments
def f(x=0,y=0):pass # 0 positional arguments
您可以为此使用 inspect
模块:
import inspect
def count_positional_args_required(func):
signature = inspect.signature(func)
empty = inspect.Parameter.empty
total = 0
for param in signature.parameters.values():
if param.default is empty:
total += 1
return total
def a():pass # 0 positional arguments
def b(x):pass # 1 positional argument
def c(x=0):pass # 0 positional arguments
def d(x,y=0):pass # 1 positional argument
def e(x,y):pass # 2 positional arguments
def f(x=0,y=0):pass # 0 positional arguments
for func in [a,b,c,d,e,f]:
print(count_positional_args_required(func))
编辑:
以上仅适用于非内置函数。
我正在寻找一种方法来获取函数在 Python 中需要多少个位置参数 3.
像这样:
def a():pass # 0 positional arguments
def b(x):pass # 1 positional argument
def c(x=0):pass # 0 positional arguments
def d(x,y=0):pass # 1 positional argument
def e(x,y):pass # 2 positional arguments
def f(x=0,y=0):pass # 0 positional arguments
您可以为此使用 inspect
模块:
import inspect
def count_positional_args_required(func):
signature = inspect.signature(func)
empty = inspect.Parameter.empty
total = 0
for param in signature.parameters.values():
if param.default is empty:
total += 1
return total
def a():pass # 0 positional arguments
def b(x):pass # 1 positional argument
def c(x=0):pass # 0 positional arguments
def d(x,y=0):pass # 1 positional argument
def e(x,y):pass # 2 positional arguments
def f(x=0,y=0):pass # 0 positional arguments
for func in [a,b,c,d,e,f]:
print(count_positional_args_required(func))
编辑: 以上仅适用于非内置函数。