欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python基础---编码

程序员文章站 2022-06-14 15:21:37
...

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
    
相关标签: 编码