小知识点
来源:互联网 发布:森田淘宝旗舰店 编辑:程序博客网 时间:2024/06/01 21:28
小知识点
python2 python3的区别
一:编码
- python2默认编码方式为ascii码
- python3默认编码方式为utf-8
在python2中显示中文的方法
在首行 添加 # -- encoding:utf-8 - -
二、长整形 long
在python3中不在有long类型,全是int
三:print
python2.7 中 print可加括号也可以不加
print('asd')print 'asd'
python3 中 print必须加括号
print('asd)
四 range
python2 中有 range 和xrange(这是一个生成器)
python3 中 只有range
五 input
python2 raw_input
python3 input
is和 == 的区别
在说is 和 ‘==’的区别之前先说下 在python中 如何表示一个对象:
python的对象包含三要素,
- id(身份标识符)
- type(数据类型)
- value(值)
在python中 is 和 ‘==’ 都是比较,但是他们的比较内容不同:is 比较的 id 和value 也就是比较两个对象是否是同一个实例对象,是否是指向同一个内存地址。 ‘==’ 比较的是 value,默认会调用_ eq _()方法
>>> a = 12345>>> b = 12345>>> a is bFalse>>> a == bTrue
看起来So easy,我们在来看两个例子
>>> a = 256>>> b = 256>>> a is bTrue>>> a == bTrue>>> a = 257>>> b = 257>>> a is bFalse>>> a == bTrue
嗯哼?a 和b 在256的时候 用is 判断内存地址居然是True?
小数据池
python3.6 对于整数做了一个 数据缓存:
因为出于对性能的考虑,Python内部做了很多的优化工作,对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫small_ints的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。Python把这些可能频繁使用的整数对象规定在范围[-5, 256]之间的小对象放在small_ints中,但凡是需要用些小整数时,就从这里面取,不再去临时创建新的对象。
python 还对字符串做了 数据缓存
a = 'asd'b = 'asd'print(a is b) # Truea = 'asd 'b = 'asd 'print(a is b) # False当不含有特殊字符时 公用同一个内存
a = 'a'*20b = 'a'*20print(a is b) # True
其他的数据类型呢?
>>> a = (1,2,3) #a和b为元组类型>>> b = (1,2,3)>>> a is bFalse>>> a = [1,2,3] #a和b为list类型>>> b = [1,2,3]>>> a is bFalse>>> a = {'python':100,'com':1} #a和b为dict类型>>> b = {'python':100,'com':1}>>> a is bFalse>>> a = set([1,2,3])#a和b为set类型>>> b = set([1,2,3])>>> a is bFalse
总结
当变量是数字、字符串、元组,列表,字典时,is和==都不相同, 不能互换使用!当比较值时,要使用==,比较是否是同一个内存地址时应该使用is。当然,开发中比较值的情况比较多。
python3编码问题
1.各个编码之间的二进制,是不能互相识别的,会产生乱码。
2.文件的储存,传输,不能是Unicode(只能是utf-8,utf-16,gbk,ascii,等)
我们在使用python3时,可以发现python3中字符串的编码是Unicode编码,Unicode编码是不可存储、不可传输的,所以使用bytes类型
bytes类型
用法和str一样,不过显示不同 b’asd‘
bytes和str的区别是编码问题 bytes的编码是utf-8 而str的编码是Unicode。所以 当文件传输 和保存的时候需要使用bytes类型
str to bytes
encode
bytes to str
decode
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点
- 小知识点!!
- 小知识点
- 小知识点
- 小知识点
- 实验4 经典进程同步问题的实现
- python3使用matplotlib出现ImportError: No module named '_tkinter' 详细解决方法
- Idea入门使用
- 1、线程的基本概念
- Maven : 将Jar安装到本地仓库和Jar上传到私服
- 小知识点
- li设置over-flow:hidden失效
- add-apt-repository命令不存在
- gogradle安装配置问题汇总
- Find in Large File
- zoj 1403 简单枚举
- mysql数据操作语句
- python循环语句之语言特点初体验
- Ubuntu 16.04 安装 JDK 和 Open Jdk