首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python赋值解构

Python赋值解构
EN

Stack Overflow用户
提问于 2014-07-29 00:32:56
回答 1查看 27.6K关注 0票数 49

这三个表达式似乎是等价的:

代码语言:javascript
复制
a,b,c = line.split()
(a,b,c) = line.split()
[a,b,c] = line.split()

它们会编译成相同的代码吗?

哪一个更像蟒蛇?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-29 00:38:09

根据dis的说法,它们都被编译成相同的字节码:

代码语言:javascript
复制
>>> def f1(line):
...  a,b,c = line.split()
... 
>>> def f2(line):
...  (a,b,c) = line.split()
... 
>>> def f3(line):
...  [a,b,c] = line.split()
... 
>>> import dis
>>> dis.dis(f1)
  2           0 LOAD_FAST                0 (line)
              3 LOAD_ATTR                0 (split)
              6 CALL_FUNCTION            0
              9 UNPACK_SEQUENCE          3
             12 STORE_FAST               1 (a)
             15 STORE_FAST               2 (b)
             18 STORE_FAST               3 (c)
             21 LOAD_CONST               0 (None)
             24 RETURN_VALUE        
>>> dis.dis(f2)
  2           0 LOAD_FAST                0 (line)
              3 LOAD_ATTR                0 (split)
              6 CALL_FUNCTION            0
              9 UNPACK_SEQUENCE          3
             12 STORE_FAST               1 (a)
             15 STORE_FAST               2 (b)
             18 STORE_FAST               3 (c)
             21 LOAD_CONST               0 (None)
             24 RETURN_VALUE        
>>> dis.dis(f3)
  2           0 LOAD_FAST                0 (line)
              3 LOAD_ATTR                0 (split)
              6 CALL_FUNCTION            0
              9 UNPACK_SEQUENCE          3
             12 STORE_FAST               1 (a)
             15 STORE_FAST               2 (b)
             18 STORE_FAST               3 (c)
             21 LOAD_CONST               0 (None)
             24 RETURN_VALUE        

所以它们都应该有相同的效率。至于哪一个是最Pythonic式的,这有点取决于观点,但我倾向于第一种或(在较小程度上)第二种选择。使用方括号会让人感到困惑,因为它看起来像是在创建一个列表(尽管事实证明并非如此)。

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

https://stackoverflow.com/questions/24999875

复制
相关文章

相似问题

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