有没有一种方法可以将其转换:
if counts:
def a(l):
return a_with_counts(l)
else:
def a(l):
return a_without_counts(l)
转换为三元表达式?
我尝试过这样的事情
def a(l):
return a_with_counts(l) if counts else a_without_counts(l)
但是我不希望每次调用if counts
时都对a(l)
进行求值,我想在方法开始时执行一次,然后在每次调用时直接对赋值的函数求值a(l)
。这可能吗?
谢谢!
答案 0 :(得分:5)
您可以通过如下定义闭包来实现:
def gen_a(counts):
return a_with_counts if counts else a_without_counts
a = gen_a(counts)
这相当于写作
a = a_with_counts if counts else a_without_counts
如果您只想调用一次。
答案 1 :(得分:3)
在lambda
中带有三进制?
a = lambda counts:a_with_counts if counts else a_without_counts
然后
a(True) # or False
将创建您可以调用的a_with_counts
(分别是a_without_counts
)函数。