Python基礎(day6)

py2 和py3區別

python2:

print()  print 'abc'

range()  xrange()  生成器

raw_input()

 

python3:

print('abc')

range()

input()

=、==、is

一個等號“=”是賦值,

兩個等號“==”是比較是否相等,

is是比較內存地址,id(內容)

例如:

li1 = [1,2,3]
li2 = li1
li3 = li2
print(id(li1),id(li2))

結果輸出:
32015816 32015816

數字、字符串、小數據池

數字的範圍:-5 到 256

字符串:

1.不能有特殊字符

2. s*20還是同一個地址,s*21以後都是兩個地址

實例:

i1 = 6
i2 = 6
print(id(i1),id(i2))
i1 = 300
i2 = 300
print(id(i1),id(i2))

list、dict、tuple、set

l1 = [1,]
l2 = [1,]
print(l1 is l2)

輸出:False

s = 'wuli'
s1 = b'wuli'
print(s,type(s))
print(s1,type(s1))

輸出:

    wuli <class 'str'>
    b'wuli' <class 'bytes'>

s = '中國'
print(s,type(s))

輸出:
中國 <class 'str'>

s1 = b'中國'
print(s1,type(s1))

輸出:報錯信息
SyntaxError: bytes can only contain ASCII literal characters.

s1 = 'wuli'
#encode 編碼,如何將str --> bytes, ()
s11 = s1.encode('utf-8')
s11 = s1.encode('gbk')
print(s11)
s2 = '中國'
s22 = s2.encode('utf-8')
s22 = s2.encode('gbk')
print(s22)

關於編碼

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 = 'wuli'
                    編碼方式: 010101010  unicode
            bytes :表現形式:s = b'wuli'
                    編碼方式: 000101010  utf-8 gbk。。。。

        對於中文:
             str  :表現形式:s = '中國'
                    編碼方式: 010101010  unicode
            bytes :表現形式:s = b'x\e91\e91\e01\e21\e31\e32'
                    編碼方式: 000101010  utf-8 gbk。。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章