有没有一种方法可以挂接函数以使其参数的求值延迟

时间:2020-05-28 07:07:46

标签: python python-decorators

请参见下面的代码示例,是否有任何方法可以挂接函数“ f”(可以用某些装饰器完成),因此,当标志为false时,将不会对参数“ a”进行求值(函数“ f1”不被召唤)

def f(flag, a):
    if flag:
        print(a)
    else:
        return
def f1():
    print('f1')
    return 'f1'

f(true,  f1()) #print f1 twice

f(false, f1()) #not print f1

1 个答案:

答案 0 :(得分:3)

在调用函数之前,总是对参数求值。

解决方案是传递对该函数的引用,然后在另一个函数内部调用它。

def f(flag, a):
    if flag:
        print(a())

f(true, f1)
f(false, f1)