python - 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)
。这可能吗?
谢谢!
解决方案
您可以通过如下定义闭包来实现:
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
如果您只打算调用一次。
推荐阅读
- r - R:跨excel文件的条件格式
- amazon-web-services - EBS 卷附加到正在运行的 EC2 Windows 实例
- string - 具有同时和顺序替换的 sed
- node.js - 如何使用 node ssh2 启动用户交互式 ssh 会话?
- scala - 如何在 AWS 上执行一个简单的 Jar 以对 S3 存储桶执行一些操作
- visual-studio-code - 使用大量 CPU 的 Visual Studio Code
- ios - IOS/Objective-C:从共享实例更改视图控制器中的属性?
- regex - 使用正则表达式,选择前导斜杠但仅当字符串为 2 或更多时?
- android - 带有 GridLayoutManager 的 RecyclerView 中的项目的高度不是 wrap_content
- python - 如何将字符串添加到 Python 3 中文本文件中读取的字符串?