Python 赋值给条件 LHS

标签 python python-3.x

我知道

a = val1 if condition else val2

但是有没有办法做类似的事情

a if condition else b = val

抛出一个SyntaxError(我想这是可以理解的)

我会使用条件,

if condition:
    a = val
else:
    b = val

但我讨厌在我的程序中出现两次相同的代码(这里是右侧)(在我的真实代码中,val是一个不平凡的表达式)。我知道我可以创建一个虚拟变量来保存该部分,但这似乎不惯用。

我也想到要做一个元组

ba = (b,a)
ba[bool(condition)] = val
b, a = ba

但这似乎也很不惯用。

还有其他我没有想到的方法吗?

最佳答案

您可以使用函数来封装逻辑并将其解压回您感兴趣的变量:

def decider(x, y, condition, val):
    if condition:
        return val, y
    return x, val

a, b = decider(a, b, cond, value)

关于Python 赋值给条件 LHS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852729/

相关文章:

python-3.x - 我怎么能把这个 curl 转换成 Python 请求

python - 将否定文本转换为python中的文本

python - reverse() 不适用于 Python 文字?

python-3.x - 如何修复 AttributeError : module 'botocore.vendored.requests' has no attribute 'Post' Traceback

python - 如何获取当前的python解释器路径

python - Discord.py 错误 : TypeError: __new__() got an unexpected keyword argument 'deny_new'

python - 在 python 中优化 Euler-Maruyama 实现

python - 对python中的lambda表达式感到困惑

Python 函数正在改变我输入的值,我不明白为什么

python - 在 Python (Flask) 中将 GET 更改为 POST