python – 如何动态地创建特定arity的函数?
作者:互联网
我想做n个参数的lambda,n在运行时计算.下一个最佳解决方案是:
lambda *x : do_something_with_a_tuple( x )
这几乎没问题,但是我想要确切的数字由Python本身检查并通过func_code查看.当n为2时,它应该完全像:
lambda x1, x2 : do_something_with_a_tuple( (x1, x2) )
n等于3:
lambda x1, x2, x3 : do_something_with_a_tuple( (x1, x2, x3) )
所以我希望variadic函数表现得像n-adic.我可以在没有eval元编程的情况下这样做吗?
解决方法:
我不认为您可以强制定义采用固定数量的参数,但您可以在函数本身中包含运行时检查.
def make_n_adic(n):
def x(*x):
if len(x) != n:
raise TypeError( "Function takes exactly {0} arguments ({1} given)".format(n, len(x))
do_something(*x)
return x
标签:python,variadic-functions 来源: https://codeday.me/bug/20190825/1717324.html