为什么在Python中没有++
and--
运算符?
不是因为它没有道理;而是因为它没有意义。最好将“ x ++”定义为“ x + = 1,求出x的先前绑定”。
如果您想知道最初的原因,则必须浏览旧的Python邮件列表,或者询问那里的某个人(例如Guido),但是在事实成立之后就很容易找到理由了:
与其他语言一样,不需要简单的增量和减量。您不会for(int i = 0; i < 10; ++i)
经常用Python编写东西。相反,你做类似的事情for i in range(0, 10)
。
由于几乎不需要它,因此没有太多理由为其提供自己的特殊语法。当您确实需要增加时,+=
通常就可以了。
这不是是否有意义,还是可以做到的决定。这是一个好处,是否值得增加该语言的核心语法的问题。请记住,这是 四个 运算符-
postinc,postdec,preinc,predec,并且每个运算符都需要具有自己的类重载;他们都需要指定和测试;它将在语言中添加操作码(这意味着更大,因此更慢的VM引擎);每个支持逻辑增量的类都需要实现它们(在+=
和之上-=
)。
+=
和都是多余的-=
,因此将成为净亏损。
问题内容: 我来自C语言,正在学习Python。缺乏显式的类型安全性令人不安,但是我已经习惯了。面对动态语言的所有优点,缺少内置的基于契约的编程(纯抽象类,接口)的不足是必须习惯的。 但是,无法请求const- cortectness使我疯狂!为什么Python中没有常量?为什么不鼓励使用类级常量? 问题答案: C和Python属于两种不同的语言类别。 前一个是 静态 类型的。后者是 动态的 。
但是我发现我不能用围棋做同样的事情,我必须写一个if-else语句。我只是想知道为什么在围棋世界里不存在这种情况(是否有一些设计原则来解释这种情况)
问题内容: 我在这里碰到了这个,总是这样使用: 什么是运营商做的,为什么不使用普通的或? 抱歉,如果以前没有回答,搜索引擎将不喜欢标点符号。 问题答案: http://docs.python.org/reference/expressions.html#notin说: [操作员]和是等效的;为了与C保持一致,是首选。[…]拼写被认为是过时的。
问题内容: 在此代码中: 我所期望的 由于最里面的括号的优先级,将执行First 。因此,值将为11,此表达式的值将为15。然后将被执行。所以12 * 15 =180。所以z = 180 我得到了什么 z = 176 这意味着VM从左到右不遵循操作员优先级。那么我对运算符优先级的理解是错误的吗? 问题答案: 表达式( y *(y + 5)); 将被放置在这样的堆栈中: 结果将按照该顺序执行 该表达
问题内容: Java中的和运算符有什么区别? 问题答案: 是算术右移,是逻辑右移。 在算术移位中,将扩展符号位以保留数字的符号性。 例如:用8位表示的将是(因为最高有效位的权重为负)。使用算术移位将其右移一位,你将得到1。但是,逻辑右移并不关心该值是否可能表示带符号的数字;它只是将所有内容移至右侧,并从左侧填充0。使用逻辑移位将右移一位将得到。
那么,在这些语言中同时使用逻辑运算符和按位运算符有什么具体的理由吗?或者他们只是出于熟悉的原因被包括在内? (我知道您可以在布尔上下文中使用“按位”运算符来避免Java和C#中的短路,但我从来不需要这样的行为,所以我想这可能是一个大部分未使用的特例)