首页 > 解决方案 > if/else 三元表达式中的 def

问题描述

有没有办法转换这个:

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)。这可能吗?

谢谢!

标签: pythonconditional-operator

解决方案


您可以通过如下定义闭包来实现:

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

如果您只打算调用一次。


推荐阅读