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

python全栈闯关--6-小知识点总结

时间:2019-09-24 14:08:18      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:span   only   生成   考证   一个   dict   utf-8   print   python   

1、python2和python3区别常用整理

# python2
print ‘abc‘
# 返回一个列表
range()
# 返回一个生成器值,不是list。每次只生成一个值,避免暂用很大的内存
xrange() # 生成器
# 输入
raw_input(...)

# python3
print(‘abc‘)
# 返回一个迭代值,需要生成列表就需要使用list(range(...))
range()
input(...)


2、复制 == 比较值是否相等 is 比较,比较的是内存地址 id(内容)

>>> li1 = [1,2,3]
>>> li2 = li1
>>> pring(id(li1),id(li2))
>>> print(id(li1),id(li2))
2472533256584 2472533256584

# 数字和字符串存在小数池,小数池范围内,使用的是同一个内存地址
# 数字  -5~256
>>> i1 = 6
>>> i2 = 6
>>> print(id(i1),id(i2))
140717920019440 140717920019440
>>> i1 = 300
>>> i2 = 300
>>> print(id(i1),id(i2))
2472536947344 2472536947248
>>> i1 = 256
>>> i2 = 256
>>> print(id(i1),id(i2))
140717920027440 140717920027440
>>> i2 = 257
>>> i1 = 257
>>> print(id(i1),id(i2))
2472536947344 2472536947248
>>> i1 = -5
>>> i2 = -5
>>> print(id(i1),id(i2))
140717920019088 140717920019088
>>> i2 = -6
>>> i1 = -6
>>> print(id(i1),id(i2))
2472536947344 2472536947248

 

# 字符串: 1、不能有特殊字符
#         2、s*20 还是同一个地址,s*21以后都是两个地址(有待考证,试验时,* 1以上,都变化了。估计是版本不同导致
>>> s1 = 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu
>>> s2 = 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu
>>> print(id(s1),id(s2))
2472537146064 2472537146064
>>> s1 = 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu@
>>> s2 = 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu@
>>> print(id(s1),id(s2))
2472537146160 2472537146064

# list、dict、tuple、set
# list
>>> l1 = [1,]
>>> l2 = [1,]
>>> print(l1 is l2)
False
>>>
>>> l2 = l1
>>> print(l1 is l2)
True

 

3、字符集编码

ascii
A : 00000010 8位 一个字节

unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节


utf-8 A : 00100000 8位 一个字节
中 : 00000001 00000010 00000110 24位 三个字节


gbk A : 00000110 8位 一个字节
中 : 00000010 00000110 16位 两个字节
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)



py3:
str 在内存中是用unicode编码。
bytes类型
对于英文:
str :表现形式:s = ‘beer‘
编码方式: unicode
bytes :表现形式:s = b‘beer‘
编码方式: utf-8 gbk。。。。

对于中文:
str :表现形式:s = ‘熊大‘
编码方式: unicode
bytes :表现形式:s = b‘\xe9\x9b\x84\xe5\xa4\xa7‘
编码方式: utf-8 gbk。。。。

>>> s = beer
>>> s1 = bbeer
>>> print(s,type(s))
beer <class str>
>>> print(s1,type(s1))
bbeer <class bytes>
>>> 
>>> 
>>> s = 雄大
>>> print(s,type(s)
      )
雄大 <class str>
>>> s1 = b雄大
SyntaxError: bytes can only contain ASCII literal characters.
>>> 
>>> 
>>> s1 = s.encode(utf-8)
>>> print(s1)
b\xe9\x9b\x84\xe5\xa4\xa7
>>> s1 = s.encode(gbk)
>>> print(s1)
b\xd0\xdb\xb4\xf3

 

python全栈闯关--6-小知识点总结

标签:span   only   生成   考证   一个   dict   utf-8   print   python   

原文地址:https://www.cnblogs.com/zxw-xxcsl/p/11577576.html

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