def inside if/else 三元表达式
def inside if/else ternary expression
有没有办法转换这个:
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)
但我不希望每次调用 a(l)
时都对 if counts
求值,我想在我的方法开头执行一次,然后每次都直接对分配的函数求值我叫a(l)
。这可能吗?
谢谢!
在 lambda
中有一个三元 ?
a = lambda counts:a_with_counts if counts else a_without_counts
然后
a(True) # or False
将创建您可以调用的 a_with_counts
(resp a_without_counts
)函数。
您可以通过如下定义闭包来实现:
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
如果您只打算调用一次。
有没有办法转换这个:
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)
但我不希望每次调用 a(l)
时都对 if counts
求值,我想在我的方法开头执行一次,然后每次都直接对分配的函数求值我叫a(l)
。这可能吗?
谢谢!
在 lambda
中有一个三元 ?
a = lambda counts:a_with_counts if counts else a_without_counts
然后
a(True) # or False
将创建您可以调用的 a_with_counts
(resp a_without_counts
)函数。
您可以通过如下定义闭包来实现:
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
如果您只打算调用一次。