在學(xué)習(xí)Python中的類型轉(zhuǎn)換之前,您應(yīng)該了解 Python數(shù)據(jù)類型。
將一種數(shù)據(jù)類型(整數(shù),字符串,浮點(diǎn)數(shù)等)的值轉(zhuǎn)換為另一種數(shù)據(jù)類型的過(guò)程稱為類型轉(zhuǎn)換。Python有兩種類型的類型轉(zhuǎn)換。
隱式類型轉(zhuǎn)換
顯式類型轉(zhuǎn)換
在隱式類型轉(zhuǎn)換中,Python自動(dòng)將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。此過(guò)程不需要任何用戶參與。
讓我們看一個(gè)示例,其中Python促進(jìn)將較低數(shù)據(jù)類型(整數(shù))轉(zhuǎn)換為較高數(shù)據(jù)類型(浮點(diǎn)數(shù))以避免數(shù)據(jù)丟失。
num_int = 123 num_flo = 1.23 num_new = num_int + num_flo print("num_int的數(shù)據(jù)類型:",type(num_int)) print("num_flo的數(shù)據(jù)類型:",type(num_flo)) print("num_new的值:",num_new) print("num_new的數(shù)據(jù)類型:",type(num_new))
當(dāng)我們運(yùn)行上面的程序時(shí),輸出將是:
num_int的數(shù)據(jù)類型: <class 'int'> num_flo的數(shù)據(jù)類型: <class 'float'> num_new的值: 124.23 num_new的數(shù)據(jù)類型: <class 'float'>
在上面的程序中
我們將兩個(gè)變量num_int和num_flo 相加,并將值存儲(chǔ)在變量num_new 中。
我們分別查看所有三個(gè)對(duì)象的數(shù)據(jù)類型。
在輸出中,我們可以看到num_int的數(shù)據(jù)類型是 integer,num_flo的數(shù)據(jù)類型是一個(gè)float。
另外,我們可以看到num_new具有float數(shù)據(jù)類型,因?yàn)?Python 總是將較小的數(shù)據(jù)類型轉(zhuǎn)換為較大的數(shù)據(jù)類型,以避免數(shù)據(jù)丟失。
現(xiàn)在,讓我們嘗試 一個(gè)字符串 和 一個(gè)整數(shù) 相加,并查看Python如何處理它。
num_int = 123 num_str = "456" print("num_int的數(shù)據(jù)類型:",type(num_int)) print("num_str的數(shù)據(jù)類型:",type(num_str)) print(num_int+num_str)
當(dāng)我們運(yùn)行上面的程序時(shí),輸出將是:
num_int的數(shù)據(jù)類型: <class 'int'> num_str的數(shù)據(jù)類型: <class 'str'> Traceback (most recent call last): File "python", line 7, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
在上面的程序中
我們兩個(gè)變量num_int 和num_str相加。
從輸出中可以看到,我們得到了 TypeError。在這種情況下,Python無(wú)法使用隱式轉(zhuǎn)換。
但是,Python針對(duì)此類情況提供了一種解決方案,稱為“顯式轉(zhuǎn)換”。
在“顯式類型轉(zhuǎn)換”中,用戶將對(duì)象的數(shù)據(jù)類型轉(zhuǎn)換為所需的數(shù)據(jù)類型。我們使用像預(yù)定義函數(shù) int(),float(),str()等進(jìn)行顯式類型轉(zhuǎn)換。
這種轉(zhuǎn)換類型也稱為類型轉(zhuǎn)換,因?yàn)橛脩魪?qiáng)制轉(zhuǎn)換(更改)對(duì)象的數(shù)據(jù)類型。
語(yǔ)法 :
<required_datatype>(expression)
可以通過(guò)將所需的數(shù)據(jù)類型函數(shù)分配給表達(dá)式來(lái)完成類型轉(zhuǎn)換。
num_int = 123 num_str = "456" print("num_int的數(shù)據(jù)類型:",type(num_int)) print("類型轉(zhuǎn)換之前num str的數(shù)據(jù)類型:",type(num_str)) num_str = int(num_str) print("類型轉(zhuǎn)換后的num str的數(shù)據(jù)類型:",type(num_str)) num_sum = num_int + num_str print("num_int與num_str的和:",num_sum) print("sum的數(shù)據(jù)類型:",type(num_sum))
當(dāng)我們運(yùn)行上面的程序時(shí),輸出將是:
num_int的數(shù)據(jù)類型: <class 'int'> 類型轉(zhuǎn)換之前num str的數(shù)據(jù)類型: <class 'str'> 類型轉(zhuǎn)換后的num str的數(shù)據(jù)類型: <class 'int'> num_int與num_str的和: 579 sum的數(shù)據(jù)類型: <class 'int'>
在上面的程序中
我們num_str和num_int變量相加。
我們使用 int() 函數(shù)將num_str從 string(高)轉(zhuǎn)換為 integer(低)類型來(lái)執(zhí)行加法。
將num_str轉(zhuǎn)換為整數(shù)后,Python可以對(duì)這兩個(gè)變量進(jìn)行相加。
最后,我們得到num_sum值 和 以及該值得數(shù)據(jù)類型為整數(shù)。
類型轉(zhuǎn)換是對(duì)象從一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換。
隱式類型轉(zhuǎn)換由Python解釋器自動(dòng)執(zhí)行。
Python避免了隱式類型轉(zhuǎn)換中的數(shù)據(jù)丟失。
顯式類型轉(zhuǎn)換也稱為類型轉(zhuǎn)換,用戶使用預(yù)定義的函數(shù)轉(zhuǎn)換對(duì)象的數(shù)據(jù)類型。
在類型轉(zhuǎn)換中,當(dāng)我們將對(duì)象強(qiáng)制為特定數(shù)據(jù)類型時(shí),可能會(huì)發(fā)生數(shù)據(jù)丟失。