是x = b'ABC'
等效於Python 3.5中的x='ABC'.encode("ascii")
?這兩種方法有什麼區別。是x = b'ABC'等於x ='ABC'.encode(「ascii」)在python3.5中?
3
A
回答
3
他們產生相同的結果:
>>> 'ABC'.encode("ascii")
b'ABC'
>>> b'ABC'
b'ABC'
然而encode()
將調用編碼器在運行時,而不是在編譯時。
0
是的,沒有。是的,就您的具體示例而言,這兩者是相同的,因爲它們會產生相同的結果。
但是,對於通用的用法,它們有一些細微的區別。例如,考慮他們對待試圖編碼非ASCII字符的不同用法:
@>>> b'Æ'
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
@>>> 'Æ'.encode("ascii")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\xc6' in position 0: ordinal not in range(128)
2
在Python 3快速測試顯示,他們確實是等價的:
In [1]: x = b'ABC'
In [2]: y = 'ABC'.encode('ascii')
In [3]: x == y
Out[3]: True
In [4]: type(x)
Out[4]: bytes
In [5]: type(y)
Out[5]: bytes
按照official python documentation:
字節文字總是以'b'或'B'作爲前綴;它們會生成字節類型的實例,而不是str類型。它們可能只包含ASCII字符;數值爲128或更大的字節必須用轉義符表示。
因此,只要所有的unicode字符串字符是ASCII,他們將被視爲相同。
+1
您應該強調,它們相等的唯一實例是unicode字符串中所有字符均爲ascii的子集。 –
+1
還要記住一個轉義字符,而技術上僅由ascii字符表示的字符可能仍然表示不能編碼爲ascii的非ascii字符。 –
相關問題
- 1. Floor(X)模X等於X?
- 2. Math.IEEERemainder(x,y)是否等同於x%y?
- 3. ASCII等價於\等式{\酒吧{X}}在Rd文件
- 4. 在Django中,MyModel.objects.get(my_field = x)是否等於MyModel.objects.filter(my_field = x).get()?
- 5. 是否有任何x的SHA1(x)等於x?
- 6. in_array或等於'x'
- 7. os.path.expanduser(「〜/ x」)等同於os.path.abspath(os.path.expanduser(「〜/ x」))?
- 8. 熊貓等同於「從x組中選擇x」by x?
- 9. 爲什麼 - 〜x等於x + 1?
- 10. 爲什麼irfftn(rfftn(x))不等於x?
- 11. 總和等於X的數組值總和等於X
- 12. NHibernate [Min(x)]是否大於等於?且不大於或等於?
- 13. 爲什麼(讓x = x + 3在fst(snd(x + 1,(5,x-2))))等於5
- 14. 在Python 3.x中等價於PIL ImageTk
- 15. 在matlab中等價於diag(x,k)
- 16. 檢查ClassParent是否屬於X類型(不是:等於X類型)
- 17. 如何測試字符串是否等於「x」|| 「X」?
- 18. 什麼是布爾x'.y + x.y'等於
- 19. .dll等同於Mac OS X
- 20. 等同於OutputDebugString()的OS X?
- 21. 什麼是cellfun(@(x)x/sum(x(:)),y,'UniformOutput',0)的等價物?
- 22. LIMIT x,y絕對等價於MySQL中的OFFSET x LIMIT y?
- 23. x = 20; x = ++ x + ++ x + x ++; java中x的最終值是65
- 24. 在C/C++爲x [I] *值Y [i ++]總是等於x [I] * Y [I]
- 25. 在Python中,x == x是否是False?
- 26. 在X中X
- 27. 在Zp中是否((a^x)^ 1/x)== a? (對於Jablon協議)
- 28. 對於整數x,(x == x + 1)總是返回false?
- 29. 在數據庫中創建x個等於x個ID的頁面數量?
- 30. x是多少,小於或等於y的值?
值得一提的是,'b'ABC'=='ABC'.encode(「ascii」)'返回'True'。 –