首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中x=y=z的引擎盖下是什么?

在Python中x=y=z的引擎盖下是什么?
EN

Stack Overflow用户
提问于 2018-08-07 06:13:39
回答 2查看 63关注 0票数 1

我在python中遇到了类似这样的事情,不确定如何理解这段代码:

代码语言:javascript
复制
somedict['some_key'] = some_val = form.some_field.data
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-07 06:27:32

x = y = z等同于x = z; y = z (是的,按照这个顺序),只是z只计算一次。

或者,就Python“编译”代码而言:

代码语言:javascript
复制
>>> compiled_code = compile("x = y = z", filename='con', mode='single')
>>> import dis
>>> dis.dis(compiled_code)
  1           0 LOAD_NAME                0 (z)
              2 DUP_TOP
              4 STORE_NAME               1 (x)
              6 STORE_NAME               2 (y)
              8 LOAD_CONST               0 (None)
             10 RETURN_VALUE
票数 5
EN

Stack Overflow用户

发布于 2018-08-07 06:19:32

somedict['some_key'] = some_val = form.some_field.data

这与以下内容相同:

代码语言:javascript
复制
some_val = form.some_field.data
somedict['some_key'] = some_val

顺序通常并不重要,因为只有右边的可以是不可分配的东西,比如方法调用、lambda调用、关键字等。

我在实践中看到的一些地方是这样的:

new, assigned, complete = all_modes = "new assigned complete".split()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51716329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档