码迷,mamicode.com
首页 > 编程语言 > 详细

python中的注意事项

时间:2018-01-19 18:53:35      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:网上   创建   一个   多个   编译器   第一个   开头   bsp   strong   

1.  python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;

or 也是从左到有计算表达式,返回第一个为真的值;

其中数字 0 是假,其他都是真;

字符 "" 是假,其他都是真;

2.  python 中数字有以下的表示方式:

2 进制是以 0b 开头的: 例如: 0b11 则表示十进制的 3

8 进制是以 0o 开头的: 例如: 0o11 则表示十进制的 9

16 进制是以 0x 开头的: 例如: 0x11 则表示十进制的 17

但是在测试的时候又遇到了个问题,那就是输出来的被自动转化成了十进制:

1 >>> a=0b111100
2 >>> a
3 60

分别使用 bin,oct,hex 可输出数字的二进制,八进制,十六进制形式,例如:

1 >>> a=0b111100
2 >>> a=60
3 >>> bin(a)
4 0b111100
5 >>> oct(a)
6 0o74
7 >>> hex(a)
8 0x3c

3.   is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

is not与!=区别于上述一致,一个比较的是引用对象,另一个比较的是两者的值。

4.  刚开始学 python,当想要自增运算的时候很自然的 a++,结果发现编译器是不认识 ++ 的,于是去网上搜了一下,结果发现一篇老外的问答很精彩,涉及到了 python 这个语言的设计原理。

问题无外乎就是 python 没有自增运算符,自增操作是如何实现的。

回答中有人介绍了关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了。

后面还有老外回答并附带了一个例子非常的精彩,指出了 python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:

>>> 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 已经是新值的名称。

  楼上的同学所说的在脚本式编程环境中没有问题。但是在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当a和b超过这个范围的时候,两个变量就会指向不同的对象了,因此地址也会不一样,比如下例:

>>> a=1000
>>> b=1000
>>> id(a);id(b)
2236612366224
2236617350384
>>>

 

python中的注意事项

标签:网上   创建   一个   多个   编译器   第一个   开头   bsp   strong   

原文地址:https://www.cnblogs.com/curo0119/p/8318213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!