1、python2と頻繁に使用される仕上げのpython3差
Python2番号を
印刷するには、「ABC」
#は、リストを返す
範囲()
#は値発生器返し、ないリストを。あなたは一つの値だけをビルドするたびに、一時的な使用を避けるために多くメモリの
xrangeの()#ビルダー
#入力
raw_input(...)
#1のpython3の
印刷(「ABC」)
#を返すイテレータ値を、あなたは(あなたがリストを使用する必要があるリストを生成する必要がありますレンジ(...))
の範囲()
INPUT(...)
図2に示すように、コピー==比較値の比較は、ID(コンテンツ)を比較するメモリアドレス等価です
たLi1に= >>> [1,2,3 ] >>> = LI2 たLi1に >>> プリング(ID()たLi1で、ID(LI2)) >>> プリント(ID()たLi1で、ID(LI2)) 2,472,533,256,584 2,472,533,256,584 #の存在小数点数と文字列プール、同じメモリアドレスを使用している、小数範囲をプール #1 番号256〜-5 >>> = I1 6 >>> = I2。6 >>> プリント(ID(I1)、IDを(I2)) 140,717,920,019,440 140,717,920,019,440 >>> I1 = 300 >>> 300 I2 = >>> プリント(ID(I1)、ID(I2)) 2472536947344 2472536947248 >>> I1 = 256 >>> 256 I2 = >>> プリント(上記ID(I1) ID(I2)) 140717920027440 140717920027440 >>> I2 = 257 >>> I1 = 257 >>>プリント(ID(I1)、ID(I2)) 2472536947344 2472536947248 >>> I1 = -5 >>> I2 = -5 >>> プリント(ID(I1)、ID(I2)) 140717920019088 140717920019088 >>> I2 = -6 >>> I1 = -6 >>> プリント(ID(I1)、ID(I2)) 2472536947344 2472536947248
#の文字列:1、特殊文字はできません # 2、S * 20、または同じアドレス、21は、2つのアドレス(された後* sの試験中、1つの以上*は、リードの異なるバージョンの変更であると推定され、検証されます。) >>> S1 = ' 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu ' >>> S2 = ' 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu ' >>> プリント(ID(S1)、ID(S2)) 2472537146064 2472537146064 >>> S1 = ' 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu @ ' >>> S2 = ' 121212asdasdasdadasdasdasdadadqrjladksfjaiodfu @ " >>> 印刷(ID(S1)、 ID(S2)) 2472537146160 2472537146064 # リスト、辞書、タプル、設定 #のリスト >>> L1 = [1 、] >>> L2 = [1 、] >>> プリント(L1があるL2) 偽 >>> >>> L2 = L1 >>> 印刷(L1があるL2) トゥルー
3、文字セットエンコーディング
ASCIIの
A:バイトの00000010. 8ビット
ユニコードA:00000000 00000001 00000010 00000100 32 4ビット・バイト
で:0,000,000,000,000,001 0,000,001,000,000,110 32 4バイトの
UTF-8 A:バイトの00100000 8ビットが
ある:00000001 0,000,001,000,000,110 24の3バイトは、
バイトの00000110 8ビット:GBK
で:0,000,001,000,000,110 2つの16ビット・バイト
の様々なバイナリコードの間、お互いを認識できない、1を、それが文字化けします。
図2に示すように、ファイルストレージ、伝送は、ユニコード(のみUTF-8、UTF-16 GBK、ない GB2312、asciid 等)
PY3:
STRは、メモリ内にエンコードされたUnicodeです。
バイトタイプ
の英語のために:
STR:式:S = 'ビール'
エンコーディング:Unicodeは
バイト:式:S = b'beer「
エンコーディング:UTF-8 GBKを。。。。
中国の場合:
STR:式:S = '熊'
エンコーディングを:Unicodeは
バイト:式:S = B '\ XE9 \ x9b \ X84 \ xe5 \ XA4 \ xa7'
エンコーディング:UTF-8 GBKを。。。。
>>>のS = ' ビール' >>> S1 = B ' ビール' >>> プリント(S、タイプ(S)) ビール < クラス ' STR ' > >>> プリント(S1、タイプ(S1)) B ' ビール' < クラス ' バイト' > >>> >>> >>> S = ' 雄大' >>> プリント(S、タイプ(複数可) ) 雄大 < クラス 'str'> >>> s1 = b'雄大「 でSyntaxError:バイトはASCIIのみのリテラル文字を含めることができます。 >>> >>> >>> S1 = s.encode(' UTF-8 ' ) >>> プリント(S1) B ' \ XE9 \ x9b \ X84 \ xe5 \ XA4 \ xa7 ' >>> S1 = S。エンコード(' GBK ' ) >>> プリント(S1) B ' \ XD0 \ XDB \ XB4 XF3 \ '