当前位置: 首页 > 面试题库 >

Python中递增和递减运算符的行为

范金鑫
2023-03-14
问题内容

我注意到,可以将预增减运算符应用于变量(例如++count)。它可以编译,但实际上并不会改变变量的值!

Python中预增/减运算符(++ /-)的行为是什么?

为什么Python会偏离C / C ++中看到的这些运算符的行为?


问题答案:

++不是运算符。它是两个+运算符。该+运营商的身份运营,这什么都不做。(澄清:the +-一元运算符仅对数字起作用,但是我假设你不会期望假设的++运算符对字符串起作用。)

++count

解析

+(+count)

转化为

count

你必须使用稍长的+=运算符来完成你想做的事情:

count += 1

我怀疑++和–运算符因一致性和简单性而被遗漏了。我不知道Guido van Rossum做出决定的确切论据,但我可以想象一些论点:

  • 更简单的解析。从技术上讲,解析++count是模糊的,因为它可能是+,+,count(两个一元+经营者)一样容易,因为它可能是++,count(一个一元++运算符)。它不是语法上的明显歧义,但确实存在。
  • 语言更简单。++只不过是的同义词+= 1。这是一种速记的发明,因为C编译器很愚蠢,并且不知道如何优化大多数计算机所拥有a += 1的inc指令。在优化编译器和字节码解释语言的今天,通常不赞成在一种语言中添加运算符以允许程序员优化其代码,尤其是在像Python这样设计成一致且易读的语言中。
  • 令人困惑的副作用。带有++运算符的语言中一个常见的新手错误是将递增/递减运算符前后的差异(优先级和返回值)混合在一起,Python喜欢消除语言“陷阱”。C中的预增/后增的优先级问题非常棘手,并且非常容易弄乱。


 类似资料:
  • C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。 下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。#include <iostream> using namespace std; class Time { private: int hours; // 0 到

  • 问题内容: 从下面或此处的程序中,为什么最后一次调用要打印该值7? 问题答案: 这将打印出“ 6”,因为它将i加1并返回值。5 + 1 = 6;这是前缀,在操作中使用该编号之前会添加该编号。 这将打印出“ 6”,因为它需要i,存储副本,加1并返回副本。因此,你获得了我当时的价值,但同时又增加了它。因此,你可以打印出旧值,但是它会增加。后缀增量的好处。 然后,当你打印出i时,它会显示i的实际值,因为

  • 本文向大家介绍关于Java中递增和递减运算符的有趣事实,包括了关于Java中递增和递减运算符的有趣事实的使用技巧和注意事项,需要的朋友参考一下 关于Java中的递增和递减运算符,有许多有趣的事实。我们将通过示例讨论其中的一些- 增量和减量运算符不能与'final'变量一起使用。这是由于与'final'关键字相关联的变量无法更改的事实- 示例 输出结果 无法嵌套'++'和'--'运算符。 示例 输出

  • 问题内容: jslint工具的提示之一是: ++和- 已知++(递增)和-(递减)运算符会通过鼓励过多的技巧而导致不良代码。在支持病毒和其他安全威胁方面,它们仅次于错误的体系结构。有一个plusplus选项禁止使用这些运算符。 我知道像这样的PHP构造可能很容易导致一次错误的错误,但是我找不到比a 或更好的控制循环的方法。 jslint是否突出显示它们,是因为有些相似的语言缺少“”和“”语法或以不

  • 根据这一环节中的信息,后置增量和递减运算符占据首位。这个链接上写着“举个例子: foo=*P++; 这里,p作为表达式的一个副作用而递增,但是foo的值是*(p++)而不是(*p)++,因为一元运算符是从右到左绑定的“。 但在这样做之后,几乎没有发生任何信息在这些链接中提到。 在上面的实验中,只有在语句结束符之后才能看到post增量的效果。但是,如果对赋值运算符的右操作数执行post增量,则即使在

  • 在对一个变量做加 1 或减 1 处理时,可以使用自增运算符 ++ 或自减运算 --。 ++ 或 -- 是单目运算符,放在操作数的前面或后面都是允许的。++ 与 -- 的作用是使变量的值增 1 或减 1。 操作数必须是一个整型或浮点型变量。自增、自减运算的含义及其使用实例如表 1 所示。 表 1 自增、自减运算的含义及其使用实例 运算符 含义 实例 结果 i++ 将 i 的值先使用再加 1 赋值给