我以这种方式动态创建一个函数:
def create_function(value):
def _function():
print value
return _function
f1 = create_func(1)
f1()
工作正常并打印'1'。
但我的问题略有不同,比如说有一个名为no_of_arguments的变量,它包含要返回的函数(_function())所需的参数个数。
def create_function():
no_of_arguments = int(raw_input()) #provided by user
def _function(a,b,c,....):
'此函数必须接受一定数量的参数,在变量no_of_arguments'中指定
#do something here
return _function
f1 = create_func()
f1(a,b,c......)
答案 0 :(得分:1)
在函数参数中使用*
使其接受任意数量的位置参数。
def func(*args):
if len(args) == 1:
print args[0]
else:
print args
...
>>> func(1)
1
>>> func(1,2)
(1, 2)
>>> func(1,2,3,4)
(1, 2, 3, 4)
答案 1 :(得分:0)
一个函数可以被定义为通过前面的*
来获取任何(最小)个参数,然后这将导致该名称被绑定到包含适当参数的元组。
def foo(a, b, *c):
print a, b, c
foo(1, 2, 3, 4, 5)
您需要限制/检查自己通过这种方式传递的值的数量。
答案 2 :(得分:0)
您可以使用*args
:
def create_function():
no_of_arguments = int(raw_input()) #provided by user
def _function(*args):
if len(args) == no_of_arguments:
dostuff()
else:
print "{} arguments were not given!".format(no_of_arguments)
return _function
以运行方式为例:
>>> f1 = create_function()
4 # The input
>>> f1('hi','hello','hai','cabbage')
>>> f1('hey')
4 arguments were not given!
答案 3 :(得分:0)
据我所知,你需要向函数传递不同数量的参数 您可以使用*传递不同数量的参数:
def create_function():
no_of_arguments = (argList) #tuple of arguments
def _function(*argList):