Wednesday, February 18, 2009

[Python]可变长参数

Python支持可变长参数,函数参数中形如*arg这样的就是可变长参数。如果定义了def func(*arg),则可以让接受不同个数的函数,比如func()以及 func("hello", "world")均为合法的函数调用。

下面这个例子用可变长参数调用func并将可变长参数*arg传递给func。比如test(sleep, 1)就相当于 sleep(1);test(max, 1, -1)就相当于调用max(1,-1)。
def test(func, *args, **kargs):
    if not callable(func):
        raise RuntimeError, str(func) + ' not a callable object'
    else:
        func(*args, **kargs)

No comments: