从另一个方法调用具有未知数量的变量的任何方法

时间:2018-03-22 11:31:35

标签: python python-3.x

这是我的代码:

import time

def f(method,timeout,condition=False,*args,**kwargs):
    t_end=time.time() +timeout
    while time.time()<t_end:
        ret=method(*args,**kwargs)
        if condition:
            return ret
    return ret

def f2(a,b):
    print(a,b)
def f3(a):
    print(a)

问题是:如何调用方法f,以便它可以使用参数f2和f3,例如。 f(f2,2,*(1,2))而且我不想使用@decorator。

1 个答案:

答案 0 :(得分:1)

condition = False是关键字参数。所以将它移到* args旁边。 除此之外,只需根据您传递的函数传递参数。

import time

def f(method, timeout, *args, condition=False, **kwargs):
    t_end = time.time() + timeout
    while time.time() < t_end:
        ret = method(*args,**kwargs)
        if condition:
            return ret
    return ret

def f2(a, b):
    print(a, b)
def f3(a):
    print(a)

f(f2, 2, *(1,2))
f(f3, 2, 1)