我有一小段代码,其中包含两个功能。我想调用第一个函数,如果它收到响应,然后对该响应执行一个函数。然后将结果分配给另一个变量。
以冗长的方式看起来像:
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版本(Python 3.8)中,有一项可能对您有用的新任务,:=
:
我们可以在[[Python 3.8
>>> 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
>>>