python 没有++运算符,深入研究后发现,这个事情原来不像仅仅是没有这个运算符那么简单
2014-03-04 00:53
645 查看
刚开始学 python,当想要自增运算的时候很自然的 a++,结果发现编译器是不认识 ++ 的,于是去网上搜了一下,结果发现一篇老外的问答很精彩,涉及到了 python 这个语言的设计原理
问题无外乎就是 python 没有自增运算符,自增操作是如何实现的
回答中有人介绍了关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了
后面还有老外回答并附带了一个例子非常的精彩,指出了 python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:
[python] view
plaincopy
>>> b = 5
>>> a = 5
>>> id(a)
162334512
>>> id(b)
162334512
>>> a is b
True
可以看出, python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
这样的设计逻辑决定了 python 中数字类型的值是不可变的,因为如果如上例,a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的
因此,正确的自增操作应该 a = a + 1 或者 a += 1,当此 a 自增后,通过 id() 观察可知,id 值变化了,即 a 已经是新值的名称
问题无外乎就是 python 没有自增运算符,自增操作是如何实现的
回答中有人介绍了关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了
后面还有老外回答并附带了一个例子非常的精彩,指出了 python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:
[python] view
plaincopy
>>> b = 5
>>> a = 5
>>> id(a)
162334512
>>> id(b)
162334512
>>> a is b
True
可以看出, python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
这样的设计逻辑决定了 python 中数字类型的值是不可变的,因为如果如上例,a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的
因此,正确的自增操作应该 a = a + 1 或者 a += 1,当此 a 自增后,通过 id() 观察可知,id 值变化了,即 a 已经是新值的名称
相关文章推荐
- python 没有++运算符,深入研究后发现,这个事情原来不像仅仅是没有这个运算符那么简单
- [深入Python]简单事情复杂化:Python计算阶乘
- 软件随想录(local.joelonsoftware.com/wiki)-2002年03月04日 没有事情像表面看起来那么简单 - Nothing is as Simple as it Seems
- python3.x的torndb使用记录(发现网上没有关于torndb的使用说明,可能太简单了吧:-P)
- 发现C++程序员转C#/silverlight不是那么简单的事情
- 自由是有代价的:聊聊这几年尝试的道路 要想生活好,别看哲学书和思想书。简单看看可以,看多了问题就大了。还是要去研究研究些具体的问题。别jb坐在屋子里,嘴里念着海子的诗,脑袋里想康德想的事情,兜里屁都没有,幻想自己是大国总理,去想影帝是怎么炼成的。
- (没有意义讨论)二元运算符和自加符的深入理解,小心多个++的陷阱
- 最近做毕业设计发现市场上的Delphi书中关于TArrayField的一个错误理解,这里现简单的提一下以后有时间在好好的研究一下
- 单例模式_没有想象中那么简单
- 最新发现:C语言中局部变量数组最大只支持1M,而全局变量数组没有这个限制!
- 最经发现C盘空间只有3.5M了,原来自己没有关休眠
- Android之自定义view原来那么简单
- 看了这个才发现jQuery源代码不是那么晦涩
- 介绍一个在线的Linux,没有安装Linux或者虚拟机不喜欢用的童鞋可以简单的用这个jslinux测试各种命令
- 设计原则:重视命名,应该没有看起来那么简单
- 科学的发展不是靠这个或那个发现,也不是靠撰写或发表一篇论文,而是靠热忱的研究和大量的工作。
- Swift 生成高清二维码 这个没有前景图片只是简单的生成普通的高清二维码
- Struts2原来是那么的简单!
- 从程序开发的角度来说,站在巨人的肩上看世间,你会发现一切都是那么的简单... ...
- Delphi程序员如何找到高薪的工作?(赚不到钱,原因只有一个,就是他们没有被公司录取。Delphi必须要独自进行深入研究,才能精通,同时也不能自由性太强)