【发布时间】:2020-02-01 23:51:31
【问题描述】:
我有一小段代码,其中包含两个函数。 如果它收到响应,我想调用第一个函数,然后对该响应执行一个函数。然后将结果分配给另一个变量。
以详细的方式看起来像:
result = get_something()
if result:
answer = transform(result)
我也可以这样做
if get_something():
answer = transform(get_something())
但这需要调用第一个函数两次
有没有办法在一行上完成所有这些操作,有点像三元(可能是 lambda)
answer = transform(result) if get_something() else None
显然在上面没有说明结果是什么,但我基本上需要说result = get_something()在哪里
我可以在列表理解中做到这一点,但这似乎有点愚蠢
answer = [transform(x) for x in [get_something()] if x][0]
【问题讨论】:
-
所以当
get_something()返回 None 时,answer应该保持未定义? -
@ababak 是的,不是未定义它应该是无
-
那是错误的:1) one-lier 不会使您的案例更具可读性 2) 您不必调用第一个函数两次 3) 并且
answer不应保持未定义以防万一对它的任何潜在引用
标签: python conditional-statements ternary-operator