为什么没有"?++&引用;Python中的操作?
可能重复:为什么没有"?++&引用;Python中的操作?,python,Python,可能重复: 这个问题可能看起来很奇怪,但我想知道为什么Python中没有这样的操作。 我知道,x++=1几乎和x++一样简单,但仍然如此。在我熟悉的大多数语言中都有这样的操作(C,C++,爪哇,C,JavaScript,PHP),但是Python中没有。 也许这与这种语言的发展哲学有关?以避免增量前、增量后的混乱,并保持简单 另外,int、long等数据类型也是不可变的。++,--运算符的含义是更改当前数据类型。因此不支持 增量操作之后,python对象本身会发生变化 >>>
这个问题可能看起来很奇怪,但我想知道为什么Python中没有这样的操作。
我知道,
x++=1
几乎和x++
一样简单,但仍然如此。在我熟悉的大多数语言中都有这样的操作(C,C++,爪哇,C,JavaScript,PHP),但是Python中没有。
也许这与这种语言的发展哲学有关?以避免增量前、增量后的混乱,并保持简单 另外,
int
、long
等数据类型也是不可变的。++
,--
运算符的含义是更改当前数据类型。因此不支持
增量操作之后,python对象本身会发生变化
>>> a = int(10)
>>> b = a
>>> print id(a), id(b)
166744132 166744132
>>> a += 1
>>> print id(a), id(b)
166744120 166744132
>>> print a, b
11 10
重复问题如下,其中包含更多信息:
以避免增量前、增量后的混乱,并保持简单 另外,
int
、long
等数据类型也是不可变的。++
,--
运算符的含义是更改当前数据类型。因此不支持
增量操作之后,python对象本身会发生变化
>>> a = int(10)
>>> b = a
>>> print id(a), id(b)
166744132 166744132
>>> a += 1
>>> print id(a), id(b)
166744120 166744132
>>> print a, b
11 10
重复问题如下,其中包含更多信息:
虽然与Python没有直接关系,但请看一下:
简而言之,是的,这是一个语言设计决策。虽然与Python没有直接关系,但请看一下:
简而言之,是的,这是一个语言设计的决定。我认为这是因为避免了令人困惑的副作用
在使用++运算符的语言中,一个常见的新手错误是混淆了递增/递减运算符前后的差异(优先级和返回值),Python喜欢消除语言“gotcha”-s 我认为这是因为避免混淆副作用 在使用++运算符的语言中,一个常见的新手错误是混淆了递增/递减运算符前后的差异(优先级和返回值),Python喜欢消除语言“gotcha”-s quot: 应该有一个——最好只有一个——显而易见的方法来做到这一点 您提到的所有语言都继承了C语言中的运算符,在C语言中,指针算术的广泛使用使得递增和递减操作更加常见。使用速记不会增加Python的表现力,而且除了“C做到了”之外,没有其他理由将其添加到语言中。(这本身并不是一个很有力的理由。)quot: 应该有一个——最好只有一个——显而易见的方法来做到这一点
您提到的所有语言都继承了C语言中的运算符,在C语言中,指针算术的广泛使用使得递增和递减操作更加常见。使用速记不会增加Python的表现力,而且除了“C做到了”之外,没有其他理由将其添加到语言中。(这本身并不是一个很强的理由。)这是一个编程语言结构的问题。Python中并不经常需要增量运算符。取而代之的是,使用范围(0,5)中i的语句。这是编程语言结构的问题。Python中并不经常需要增量运算符。取而代之的是,使用诸如for i in range(0,5)之类的语句。经常使用“for i in range(0,5):”不是好主意=)它只在您需要数字时才有用。经常使用“for i in range(0,5):”不是好主意=)它只在你需要数字的时候才有用不变性不是问题:你没有改变数字
5
!(我似乎记得在一些非常早期的语言中,你实际上可以改变整数本身的值。显然这是一件坏事。)这只是一种设计选择。不可变性不是问题:你没有改变数字5
!(我似乎记得在一些非常早期的语言中,你实际上可以改变整数本身的值。显然这是一件坏事。)这只是一种设计选择。