在Python中以编程方式传递不确定数量的参数

3 投票
2 回答
2821 浏览
提问于 2025-04-15 16:40

我想要一个简单的方法,可以把一个函数和它的参数放进去,等到以后再执行,这样就可以在它外面包裹一层。

在这个例子中,我想用它来做性能测试,比如:

def timefunc(fn, *args):
   start = time.clock()
   fn(args)
   stop = time.clock()
   return stop - start

我该怎么传递参数,如果参数的数量不确定呢?我怎么知道参数的数量?一旦我知道了参数的数量,我又该怎么调用这个函数呢?

2 个回答

2

MatrixFrog的回答是正确的,不过我再补充一下。要找出参数的数量,只需要调用 len,因为 args 是一个元组:

import time

def timefunc(fn, *args):
   start = time.clock()
   print len(args), type(args)
   fn(*args)
   stop = time.clock()
   return stop - start


def myfoo(a, b):
    c = a + b
    return c


timefunc(myfoo, 5, 6)

在timefunc里面的打印语句会输出:

2 <type 'tuple'>

由于 args 是一个元组,你可以像访问其他元组一样访问它。

8

只需要这样调用这个函数:

fn(*args)

撰写回答