gpt4 book ai didi

python - 使用 inplace OR 简化空检查

转载 作者:太空狗 更新时间:2023-10-30 02:11:48 26 4
gpt4 key购买 nike

我正在以下列形式简化 python 中的一些 null/false 检查:

这个:

if not a:
a = 'foo'

可以简化为:

a = a or 'foo'

并且,往上看很自然地会尝试进一步简化,如下所示:

a |= 'foo'

但是,python 的就地 or 实际上是就地按位或:

a = None
a |= 'foo'
=> TypeError: unsupported operand type(s) for |=: 'NoneType' and 'str'

a = 'foo'
a |= 'bar'
=> TypeError: unsupported operand type(s) for |=: 'str' and 'str'

a = 1
a |= 2
print a
=> 3

a = 2
a |= 3
print a
=> 3

所以,问题是:Python 有就地或吗?另外,您是否发现像这样进行简化的 null/false 检查有问题?

免责声明

我知道 a is not Nonenot a 不同。前者评估 a 是否确实不是 None 值,而后者评估 a 是否不是评估为 False 的值(如 FalseNone0''(空字符串)、[]{} (空集合)等等)

最佳答案

Python 没有就地逻辑 or,只有您已经在使用的按位版本。

关于python - 使用 inplace OR 简化空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com