是否可以延迟作为函数调用一部分的表达式的求值?
Is it possible to delay the evaluation of an expression that is part of a function call?
在我的程序中多次出现这种模式:
if some_bool:
print(f"some {difficult()} string")
我考虑过为此创建一个函数:
def print_cond(a_bool, a_string):
if a_bool:
print(a_string)
print_cond(some_bool, f"some {difficult()} string")
但这样做的结果是第二个参数总是被评估,即使 some_bool == False。有没有办法将 f 字符串的评估延迟到它实际打印的时间点?
您可以通过将 f 字符串放在 lambda 中来延迟 f 字符串的计算。
例如:
def difficult():
return "Hello World!"
def print_cond(a_bool, a_string):
if a_bool:
print("String is:")
print(a_string()) # <-- note the ()
print_cond(True, lambda: f"some {difficult()} string")
打印:
String is:
some Hello World! string
在我的程序中多次出现这种模式:
if some_bool:
print(f"some {difficult()} string")
我考虑过为此创建一个函数:
def print_cond(a_bool, a_string):
if a_bool:
print(a_string)
print_cond(some_bool, f"some {difficult()} string")
但这样做的结果是第二个参数总是被评估,即使 some_bool == False。有没有办法将 f 字符串的评估延迟到它实际打印的时间点?
您可以通过将 f 字符串放在 lambda 中来延迟 f 字符串的计算。
例如:
def difficult():
return "Hello World!"
def print_cond(a_bool, a_string):
if a_bool:
print("String is:")
print(a_string()) # <-- note the ()
print_cond(True, lambda: f"some {difficult()} string")
打印:
String is:
some Hello World! string