栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python中的“ x = y或z”分配有什么作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的“ x = y或z”分配有什么作用?

or
”表达式对赋值的作用:

我们有时会在Python中看到这样的示例,以三元赋值代替条件表达式(实际上,这有助于启发该语言添加条件语句)。

x = a or b

如果

bool(a)
返回
False
,则
x
分配值为
b

条件表达式的相同用例(即三元分配)

这是一个条件表达式的示例,该条件表达式可以完成相同的任务,但可能不那么神秘。

def my_function(arg_1=None, arg_2=0):    determination = arg_1 if arg_1 else arg_2 if arg_2 else 'no arguments given!'    print(determination)    return determination

过多重复此语法被认为是不好的样式,否则单行就可以了。缺点是,它
一个有点重复。

or
表达方式

基本情况,

x ory
返回
x
如果
bool(x)
求值
True
,否则它计算
y
,(见供参考的文档)。因此,一系列
or
表达式具有返回计算的第一个项目
True
或最后一个项目的效果。

例如

'' or [] or 'apple' or () or set(['banana'])

返回

'apple'
,第一个评估为的项目
True
,以及

'' or [] or ()

返回

()
,即使它的值为
False

扩展
and
使用

为了便于比较,

x and y
回报率
x
,如果
bool(x)
计算结果为
False
,否则返回
y

and
当您考虑到条件
and
序列中的所有条件都需要评估
True
以使控制流沿着该路径前进时,以这种方式工作是有意义的,并且当您遇到一个条件序列时,继续评估那些项目是没有意义的那就是
False

and
用于分配的实用程序并不像using那样明显
or
,但在历史上曾被用于三元分配。也就是说,在此更清晰直接的构造可用之前:

a = x if condition else y

与布尔运算符形成的等效项是:

a = condition and x or z# don't do this!

尽管其含义是基于对Python

and
or
评估的全面理解而得出的,但其可读性不及三元条件,因此最好完全避免。

结论

必须谨慎使用布尔表达式进行赋值。
绝对不要将其

and
用于分配,这很容易引起错误,很容易混淆。样式专家会发现
or
for赋值的使用不太可取(比更冗长的三元
if
条件
else
),但是我发现它在专业的Python社区中是如此普遍,以至于它是惯用的。

如果您选择使用它,请谨慎行事,要理解到final元素(无论达到什么值)将始终返回而不管其评估如何,因此,final元素可能应该是一个 文字
,这样您就知道您拥有一个很好的默认后备为您的变量。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号