Python基础---编码

1.Python3 编码转换

编码方式 编码使用的字节
ASCII 英文一个字节
Unicode 没有优化,所有字符都是4个字节
UTF-8 英文一个字节 中文: 三个字节
GBK 英文: 一个字节 中文: 两个字节

(1).各个编码之间的二进制,是不能互相识别的,会产生乱码。
(2)文件的储存,传输,不能是Unicode占用空间大(只能是utf-8 utf-16 gbk,gb2312,asciid等)

Python3字符串内存中的编码是Unicode,由于Unicode编码不能用于传输,此时使用另一种数据类型bytes,这种数据类型的编码方式可以为UTF-8或GBK。

'''
bytes数据类型:
        对于英文:
             str  :表现形式:s = 'alex'
                    编码方式: 010101010  unicode
            bytes :表现形式:s = b'alex'
                    编码方式: 000101010  utf-8 gbk。。。。

        对于中文:
             str  :表现形式:s = '中国'
                    编码方式: 010101010  unicode
            bytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
                    编码方式: 000101010  utf-8 gbk。。。。
 '''

str1='xiaojing'
str2=b'xiaojing'
print(str1,type(str1)) #xiaojing    <class 'str'>
print(str2,type(str2)) #b'xiaojing' <class 'bytes'>

str1='中国'
str2=str1.encode('utf-8')  #encode编码,常用编码方式:utf-8 gbk
print(str2) # b'\xe4\xb8\xad\xe5\x9b\xbd'  两个中文6个字节----说明是utf-8编码,如果是四个字节则是GBK

2.python2与python3的区别

'''
python2
        print()  print 'abc'
        range()   xrange()生成器
        raw_input()

python3
        print('abc')
        range()
        input()
'''

3. 小数据池

  • 数字、字符串存在小数据池

    当数字或字符串在一定范围内,如果值相等会共用同一份数据。

    数字的范围:-5~256

    字符串:1.没有特殊字符

    ​ 2.s*20(一个字符乘以20以下还是同一个地址,大于或等于20则地址不同)

    >>> a=50
    >>> b=50
    >>> print(id(a),id(b))
    1515619984 1515619984
    >>> a=300
    >>> b=300
    >>> print(id(a),id(b))
    30057584 30707504
    
  • list、dict、tuple、set 数据类型不存在小数据池

    >>> list1=[1,2]
    >>> list2=[1,2]
    >>> print(id(list1),id(list2))
    42388936 42386056
    

猜你喜欢

转载自blog.csdn.net/xiaojingfirst/article/details/88196017
今日推荐