【问题标题】:Why is 'a operator= b' relatively a little faster than 'a = a operator b' in Python?为什么'a operator= b'在Python中比'a = a operator b'相对快一点?
【发布时间】:2019-07-20 07:29:54
【问题描述】:

我在 Mark Summerfield 所著的《Python 3 编程》一书中读到了这句话。这种说法对我来说没有多大意义。那么你能帮我解决这个小而重要的声明吗?

增强版本只查找 a 的值一次,因此它可能更快。

第 1 章“Python 的美丽心脏”,#6 算术运算符,p31,第 4 行

【问题讨论】:

  • 请使用> markdown 格式给出具体的引用(至少是标题和作者,但最好还包括章节/页面/位置),并阐明什么你的问题是关于那个的。另请注意,并非所有可能回答的人都标识为“伙计们”。
  • 男生不分性别
  • @AlecAlameddine 不是所有人
  • 好吧,如果有人喜欢写“guys”而不是“guys and Girls/gals”,他们完全有权使用,而且“guys”通常被认为是中立的。专注于那是迂腐的,这对 SO 不利
  • @AlecAlameddine 如果这是不重要的迂腐,那么您的反诉也是如此;你为什么卷入其中?您实际上所说的“男人是性别中立的”是“我不觉得被男人排斥,其他人也不应该”。好吧,有些人这样做(也可以通过“guys and gals”,因为它的价值)。因此,有了这些信息,您可以: 1. 停止使用它,就好像没有人感到被它排斥一样;或 2. 故意排他性。这取决于你。

标签: python python-3.x operators


【解决方案1】:

This 很好地解释了为什么赋值 i=i+1 比 i+=1 稍慢 基本上,它们在低级别对应于处理器的不同工作方式。

【讨论】:

  • 谢谢,现在确实很有意义,我完全忘记了低级别。
  • 乍一看,前面的陈述并不令人惊讶,特别是对于那些熟悉类 C 语言的人来说。在此类语言中,增强赋值是分配运算结果的简写——例如,a += 8 本质上与 a = a + 8 相同。但是,这里有两个重要的细微之处,
  • 与 int ,当在不可变对象上使用增强赋值运算符时,幕后实际发生的是执行操作,并创建一个保存结果的对象;然后是目标对象引用被反弹以引用结果对象而不是它之前引用的对象。
  • 第二个微妙之处是 a operator= b 与 a = a operator b 不太一样。增强版本只查找 a 的值一次,因此它可能更快。
  • 以上两个语句是写在书中的。这意味着它有一些不同于C语言的东西。 @皮亚卡
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2016-06-02
  • 2014-03-29
  • 2019-02-03
  • 2021-10-06
  • 1970-01-01
  • 2010-12-08
相关资源
最近更新 更多