您現(xiàn)在的位置是:首頁(yè) >python教程 >python教程五 數(shù)據(jù)類(lèi)型轉(zhuǎn)換網(wǎng)站首頁(yè)python教程
python教程五 數(shù)據(jù)類(lèi)型轉(zhuǎn)換
數(shù)據(jù)類(lèi)型轉(zhuǎn)換
有時(shí)候,我們需要對(duì)數(shù)據(jù)內(nèi)置的類(lèi)型進(jìn)行轉(zhuǎn)換,數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,一般情況下你只需要將數(shù)據(jù)類(lèi)型作為函數(shù)名即可。
Python 數(shù)據(jù)類(lèi)型轉(zhuǎn)換可以分為兩種:
隱式類(lèi)型轉(zhuǎn)換 - 自動(dòng)完成
顯式類(lèi)型轉(zhuǎn)換 - 需要使用類(lèi)型函數(shù)來(lái)轉(zhuǎn)換
隱式類(lèi)型轉(zhuǎn)換
在隱式類(lèi)型轉(zhuǎn)換中,Python 會(huì)自動(dòng)將一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型,不需要我們?nèi)ジ深A(yù)。
以下實(shí)例中,我們對(duì)兩種不同類(lèi)型的數(shù)據(jù)進(jìn)行運(yùn)算,較低數(shù)據(jù)類(lèi)型(整數(shù))就會(huì)轉(zhuǎn)換為較高數(shù)據(jù)類(lèi)型(浮點(diǎn)數(shù))以避免數(shù)據(jù)丟失。
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo
print("datatype of num_int:",type(num_int))
print("datatype of num_flo:",type(num_flo))
print("Value of num_new:",num_new)
print("datatype of num_new:",type(num_new))
以上實(shí)例輸出結(jié)果為:
num_int 數(shù)據(jù)類(lèi)型為: <class 'int'> num_flo 數(shù)據(jù)類(lèi)型為: <class 'float'> num_new: 值為: 124.23 num_new 數(shù)據(jù)類(lèi)型為: <class 'float'>
代碼解析:
實(shí)例中我們對(duì)兩個(gè)不同數(shù)據(jù)類(lèi)型的變量 num_int 和 num_flo 進(jìn)行相加運(yùn)算,并存儲(chǔ)在變量 num_new 中。
然后查看三個(gè)變量的數(shù)據(jù)類(lèi)型。
在輸出結(jié)果中,我們看到 num_int 是 整型(integer) , num_flo 是 浮點(diǎn)型(float)。
同樣,新的變量 num_new 是 浮點(diǎn)型(float),這是因?yàn)?Python 會(huì)將較小的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為較大的數(shù)據(jù)類(lèi)型,以避免數(shù)據(jù)丟失。
我們?cè)倏匆粋€(gè)實(shí)例,整型數(shù)據(jù)與字符串類(lèi)型的數(shù)據(jù)進(jìn)行相加:
num_int = 123
num_str = "456"
print("Data type of num_int:",type(num_int))
print("Data type of num_str:",type(num_str))
print(num_int+num_str)
以上實(shí)例輸出結(jié)果為:
num_int 數(shù)據(jù)類(lèi)型為: <class 'int'> num_str 數(shù)據(jù)類(lèi)型為: <class 'str'> Traceback (most recent call last): File "/dyf-test/test.py", line 7, in < module > print(num_int+num_str) TypeError: unsupported operand type(s) for +: 'int' and 'str'
從輸出中可以看出,整型和字符串類(lèi)型運(yùn)算結(jié)果會(huì)報(bào)錯(cuò),輸出 TypeError。 Python 在這種情況下無(wú)法使用隱式轉(zhuǎn)換。
但是,Python 為這些類(lèi)型的情況提供了一種解決方案,稱為顯式轉(zhuǎn)換。
顯式類(lèi)型轉(zhuǎn)換
在顯式類(lèi)型轉(zhuǎn)換中,用戶將對(duì)象的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為所需的數(shù)據(jù)類(lèi)型。 我們使用 int()、float()、str() 等預(yù)定義函數(shù)來(lái)執(zhí)行顯式類(lèi)型轉(zhuǎn)換。
int() 強(qiáng)制轉(zhuǎn)換為整型:
x = int(1) # x 輸出結(jié)果為 1
y = int(2.8) # y 輸出結(jié)果為 2
z = int("3") # z 輸出結(jié)果為 3
float() 強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型:
x = float(1) # x 輸出結(jié)果為 1.0
y = float(2.8) # y 輸出結(jié)果為 2.8
z = float("3") # z 輸出結(jié)果為 3.0
w = float("4.2") # w 輸出結(jié)果為 4.2
str() 強(qiáng)制轉(zhuǎn)換為字符串類(lèi)型:
x = str("s1") # x 輸出結(jié)果為 's1'
y = str(2) # y 輸出結(jié)果為 '2'
z = str(3.0) # z 輸出結(jié)果為 '3.0'
整型和字符串類(lèi)型進(jìn)行運(yùn)算,就可以用強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)完成:
num_int = 123
num_str = "456"
print("num_int 數(shù)據(jù)類(lèi)型為:",type(num_int))
print("類(lèi)型轉(zhuǎn)換前,num_str 數(shù)據(jù)類(lèi)型為:",type(num_str))
num_str = int(num_str) # 強(qiáng)制轉(zhuǎn)換為整型
print("類(lèi)型轉(zhuǎn)換后,num_str 數(shù)據(jù)類(lèi)型為:",type(num_str))
num_sum = num_int + num_str
print("num_int 與 num_str 相加結(jié)果為:",num_sum)
print("sum 數(shù)據(jù)類(lèi)型為:",type(num_sum))
以上實(shí)例輸出結(jié)果為:
num_int 數(shù)據(jù)類(lèi)型為: <class 'int'> 類(lèi)型轉(zhuǎn)換前,num_str 數(shù)據(jù)類(lèi)型為: <class 'str'> 類(lèi)型轉(zhuǎn)換后,num_str 數(shù)據(jù)類(lèi)型為: <class 'int'> num_int 與 num_str 相加結(jié)果為: 579 sum 數(shù)據(jù)類(lèi)型為: <class 'int'>