私は引数をカウントする方法についての一部を飛ばしてるような何かを行うことができます
def magic_lambda_parameter_counting_function(lambda_function):
"""Returns the number of parameters in lambda_function
Args:
lambda_function - A lambda of unknown number of parameters
"""
を探していますvarargsとキーワードを考慮する必要があります。しかし、これはあなたを開始する必要があります。
>>> import inspect
>>> foo = lambda x, y, z: x + y + z
>>> inspect.getargspec(foo)
ArgSpec(args=['x', 'y', 'z'], varargs=None, keywords=None, defaults=None)
これは、Python 3(@JeffHeatonのおかげで)のようinspect.getargspec is deprecatedのように聞こえます。お勧めのソリューションはinspect.signatureです。結果の.parameters
メンバーには、問題の関数へのパラメータの配置に応じてさまざまな構造が含まれていますが、上記のPython 2の例の関数と一致しています。
>>> import inspect
>>> foo = lambda x, y, z: x + y + z
>>> inspect.signature(foo).parameters
mappingproxy(OrderedDict([('x', <Parameter "x">), ('y', <Parameter "y">), ('z', <Parameter "z">)]))
はinspect.getargspecが廃止されましたように、 – JeffHeaton