如何动态创建一个Python函数,该函数需要指定数量的参数?

时间:2013-07-02 07:21:40

标签: python python-2.7 runtime

我以这种方式动态创建一个函数:

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......)

4 个答案:

答案 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):