是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. Math.IEEERemainder(x,y)是否等同於x%y?
- 2. 是否有任何x的SHA1(x)等於x?
- 3. 熊貓等同於「從x組中選擇x」by x?
- 4. 爲什麼 - 〜x等於x + 1?
- 5. 爲什麼irfftn(rfftn(x))不等於x?
- 6. 總和等於X的數組值總和等於X
- 7. NHibernate [Min(x)]是否大於等於?且不大於或等於?
- 8. 爲什麼(讓x = x + 3在fst(snd(x + 1,(5,x-2))))等於5
- 9. 在matlab中等價於diag(x,k)
- 10. 什麼是布爾x'.y + x.y'等於
- 11. 等同於OutputDebugString()的OS X?
- 12. 什麼是cellfun(@(x)x/sum(x(:)),y,'UniformOutput',0)的等價物?
- 13. 在Python中,x == x是否是False?
- 14. 在X中X
- 15. 用於IIS/.NET 3.5的X-Sendfile或X-Accel-Redirect等價物
- 16. 在VB中等於或小於x的日期
- 17. PostgreSQL convert_from(X,'UTF8')等效於PHP
- 18. NOT IN(SELECT * FROM X)等效於MongoDB
- 19. Linux等效於OS X的/ usr/bin/open
- 20. 等同於Genexus X中GeneXus 9「Force Theme」的命令是什麼?
- 21. 什麼是RxSwift 3.0等同於RxSwift 2.x中的AnonymousDisposable?
- 22. perldb中的'x'等同於emacs中python的pdb的等價物?
- 23. 不同的是X是X _
- 24. .def文件等效於OS X
- 25. 檢查字符串爲x%等於
- 26. OSCompareAndSwap(Mac OS X)等價於CMPXCHG8B嗎?
- 27. 獲取等於String2 x次的String1?
- 28. MSBuild - 等待x秒
- 29. C++ x + = 1 x ++和x = x + 1是不是一樣?
- 30. 將時間戳轉換爲「X秒前」,「X分鐘前」,「X小時前」等等
值得一提的是,'b'ABC'=='ABC'.encode(「ascii」)'返回'True'。 –