我有这个函数:
def func(a, b, c=1, d=2):
pass
使用以下方式:
import inspect
inspect.getargspec(func)
我得到了这个结果:
ArgSpec(args=['a', 'b', 'c', 'd'], varargs=None, keywords=None, defaults=(1, 2))
有没有更简单的方法来查找不带默认值的函数参数? 对于上面的语句,我必须做一些丑陋的事情,例如:
ab = args[:-len(defaults)]
获取这些参数。现在,ab
将是 ['a', 'b']
。
谢谢。
[编辑] 更多澄清:
我想在函数 func
外执行检查,而不是在函数内部执行。
func
之外找到这些东西,而不是在函数内部。 - Mihai Zamfirinspect.getargs
的实现,如果 CPython 开发人员想不出更简单的方法,那么很可能没有更简单的方法了。 - Dima Tisnekfoo.func_code.co_varnames [: foo.func_code.co_argcount-len(foo.func_defaults)]
,但这只适用于简单的函数,例如不包括Python2元组参数,比如def foo(x, (y, z), bar): pass
。 - Dima Tisnek