2012-05-30 55 views
10

在Python 3.2中,我可以輕鬆更改對象的類型。例如:在Python 2.7中將字符串更改爲字節類型

x=0 
print(type (x)) 
x=bytes(0) 
print(type (x)) 

它會給我:

<class 'int'> 
<class 'bytes'> 

但是,在Python 2.7,看來我不能用同樣的方式來做到這一點。如果我做相同的代碼,它給我這個:

<type 'int'> 
<type 'str'> 

我該怎麼做才能將類型更改爲字節類型?

+0

Martin的回答有相關信息。 –

回答

8

我能做些什麼來改變字節類型?

你不能在Python 2.7中沒有像'bytes'這樣的類型。

從Python 2.7文檔(5.6序列類型): 「有七種序列類型:字符串,Unicode字符串,列表,元組,字節數組,緩衝區和xrange對象。」

從Python 3.2文檔(5.6序列類型): 「有六種序列類型:字符串,字節序列(字節對象),字節數組(字節數組對象),列表,元組和範圍對象。

11

你不改變類型,你正在給一個變量分配一個不同的值。

你也在打擊python 2.x和3.x之間的一個基本區別;大大簡化了2.x類型unicode已經取代str類型,它本身已被重命名爲bytes。它恰好在您的代碼中工作,因爲更新版本的Python 2已將bytes添加爲str的別名,以便輕鬆編寫可在兩個版本下使用的代碼。

換句話說,您的代碼按預期工作。

+0

所以在2.7中,有什麼方法可以讓我在3.2中做同樣的事情?我只是希望它是一個字節類型。 – Smith

+3

在python 2.7 *中輸入'str'是* bytes類型。 –

4

在Python 2.x中,bytes只是str的別名,所以一切都按預期工作。此外,您不會在此更改任何對象的類型 - 您只是將名稱x重新命名爲不同的對象。

+2

所以在2.7中,有什麼辦法讓我在3.2中做同樣的事情?我只是希望它是一個字節類型。 – Smith

相關問題