1
関数引数としてラムダが取ることができる引数の数を指定する可能性はありますか?例えばPythonは関数引数としてラムダ引数を指定します
:kが標準ラムダない場合
def func(k=lambda x:return x**2):
return k
私は指定することができますが、そのkが正確に一つの引数を取ることになっていますか?
マックス
関数引数としてラムダが取ることができる引数の数を指定する可能性はありますか?例えばPythonは関数引数としてラムダ引数を指定します
:kが標準ラムダない場合
def func(k=lambda x:return x**2):
return k
私は指定することができますが、そのkが正確に一つの引数を取ることになっていますか?
マックス
あなたはinspect.getargspec
を使用して、このような何かを行うことができます:上記の意志は(それがないべきであるが)のようなもので失敗無残こと
import inspect
def func (k = lambda x: x ** 2):
if not callable(k) or len(inspect.getargspec(k).args) != 1:
raise TypeError('k must take exactly one argument.')
# Do whatever you want
注:
func (lambda x, y = 8: x + y)
を...このケースを処理したい場合は、もう少し複雑なものが必要です。
import inspect
def func (k = lambda x: x ** 2):
if not callable(k):
raise TypeError('k must be callable.')
argspec = inspect.getfullargspec(k)
nargs = len(argspec.args)
ndeft = 0 if argspec.defaults is None else len(argspec.defaults)
if nargs != ndeft + 1:
raise TypeError('k must be callable with one argument.')
# Do whatever you want
ありがとう! –
なぜラムダを引数にしていますか?またあなたの質問にあるものは有効なpythonではありません –
また、十分な引数を指定しないでラムダを呼び出すとエラーになるので、それをキャッチすることができます –