如果不是一个函数,则根据另一个函数的结果执行一个函数

问题描述 投票:0回答:3

我有一小段代码,其中包含两个功能。我想调用第一个函数,如果它收到响应,然后对该响应执行一个函数。然后将结果分配给另一个变量。

以冗长的方式看起来像:

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]

我有一小段代码,其中包含两个功能。我想调用第一个函数,如果它收到响应,然后对该响应执行一个函数。然后将结果分配给另一个...

python conditional-statements ternary-operator
3个回答
2
投票

在最新的Python版本(Python 3.8)中,有一项可能对您有用的新任务,:=


0
投票

我们可以在[[Python 3.8


0
投票
尽管我不完全理解以这种方式做事的原因(这比其他人还不清楚[],但这里是使用:]的示例)

>>> def get_something(flag): # Added the flag argument, to mimic different return values ... return 5 if flag else None ... >>> answer = (lambda func, arg: func(arg) if arg else None)(int, get_something(True)) >>> answer 5 >>> answer = (lambda func, arg: func(arg) if arg else None)(int, get_something(False)) >>> answer >>>

© www.soinside.com 2019 - 2024. All rights reserved.