雖然 Python 是弱類型編程語言,不需要像 Java 或 C 語言那樣還要在使用變量前聲明變量的類型,但在一些特定場景中,仍然需要用到類型轉換。
比如說,我們想通過使用 print() 函數輸出信息“您的身高:”以及浮點類型 height 的值,如果在交互式解釋器中執行如下代碼:
>>> height = 70.0
>>> print("您的身高"+height)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
print("您的身高"+height)
TypeError: must be str, not float
你會發現這是錯誤的,解釋器提示我們字符串和浮點類型變量不能直接相連,需要提前將浮點類型變量 height 轉換為字符串才可以。
慶幸的是,Python 已經為我們提供了多種可實現數據類型轉換的函數,如表 1 所示。
函 數 | 作 用 |
---|---|
int(x) | 將 x 轉換成整數類型 |
float(x) | 將 x 轉換成浮點數類型 |
complex(real,[,imag]) | 創建一個復數 |
str(x) | 將 x 轉換為字符串 |
repr(x) | 將 x 轉換為表達式字符串 |
eval(str) | 計算在字符串中的有效 Python 表達式,並返回一個對象 |
chr(x) | 將整數 x 轉換為一個字符 |
ord(x) | 將一個字符 x 轉換為它對應的整數值 |
hex(x) | 將一個整數 x 轉換為一個十六進制字符串 |
oct(x) | 將一個整數 x 轉換為一個八進制的字符串 |
需要注意的是,在使用類型轉換函數時,提供給它的數據必須是有意義的。例如,int() 函數無法將一個非數字字符串轉換成整數:
>>> int("123") #轉換成功
123
>>> int("123個") #轉換失敗
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
int("123個")
ValueError: invalid literal for int() with base 10: '123個'
>>>