Python/數據類型
< Python
Python是動態類型(dynamic typing)語言。
內建數據類型
編輯內建數據類型可分為幾類:數值、序列、集合、映射﹑布林。
數值類型:
- int
- 整數,例如1,2,3。Python 2中稱為long
int1 = 1
int2 = 2
- float
- 雙精度浮點數,例如1.0, 234.5, 35.2
float1 = 2.3
float2 = 0.234
- complex
- 複數,例如5j, 10+5j
complex1 = 10+5j
complex2 = 5j
序列類型:
類別 | 描述 | 例子 | 註 |
---|---|---|---|
str | 字串 | a,abcde,12345,!@#$ | Python 3.x |
bytes | 整數的位元組序列 | b'\x00' | Python 3.x |
byte array | 整數的位元組序列的字符串 | 1.0,234.5,35.2 | Python 3.x |
list | 列表 | [1 , 'apple'] | |
tuple | 元組 | (1 , 'apple') |
- str
- 字串,例如'a','1','a1','!@#'
string1 = 'abc'
string2 = '12ab!@'
結合類型:
- set: 可修改。從Python 2.6
- frozen set: 不可修改。從Python 2.6
映射類型:
- dict: 使用由花括號內由逗號分割的
键: 值
對的形式: 一個唯一的键
對應著一個值
, 例如:
{"a": 1, "b": 2, "c": 3}
- bool: 有內建值
True
與False
。通常可與整數1與0對應互換。實際上,條件表達式可以接受任何類型的值,把特殊的如布爾值False
、整數值0、空字符串""
、空列表等任何空對象可以等效為False
,其它所有情況等效為True
。
可變 vs 不可變的對象
編輯不可變的類型 | 可變的類型 |
---|---|
|
|
Python儲存變量的方式是為值指派一個地址,然後變量指著該地址。可變與不可變指的是值,對於可變對象,每次變量改變會改變本來在該地址的值;對於不可變對象,每次變量改變會基於新的值重新指派地址。
從0開始
編輯對於Python,紀錄預設是由0開始,不論是輸出順序數字的range()
,還是儲存多個數值的變量。第一個數值對於電腦是第零個,第二個是第一個,如此類推。
Null對象
編輯使用None。None不是空指針或空引用,而是一個單例。比較 None 應該用 is 而不要用 ==:
if item is None:
...
another = None #赋值
if not item is None:
...
if item is not None: # 同样是可以的
...
作為函數預設參數:
def log(message, type=None):
...
類型轉換
編輯v1 = int(2.7) # 2
v2 = int(-3.9) # -3
v3 = int("2") # 2
v4 = int("11", 16) # 17, 在十六进制下
v5 = long(2)
v6 = float(2) # 2.0
v7 = float("2.7") # 2.7
v8 = float("2.7E-2") # 0.027
v9 = float(False) # 0.0
vA = float(True) # 1.0
vB = str(4.5) # "4.5"
vC = str([1, 3, 5]) # "[1, 3, 5]"
vD = bool(0) # False
vE = bool(3) # True
vF = bool([]) # False - 空列表
vG = bool([False]) # True - 非空列表
vH = bool({}) # False - 空字典
vI = bool("") # False - 空字符串
vJ = bool(" ") # True - 非空字符串(字符串值为一个空格)
vK = bool(None) # False
vL = bool(len) # True
vM = set([1, 2])
vN = list(vM)
vO = list({1: "a", 2: "b"}) # [1, 2, 3]
vP = tuple(vN)
vQ = list("abc") # ['a', 'b', 'c']
print (v1, v2, v3, type(v1), type(v2), type(v3))
隱式類型轉換:
int1 = 4
float1 = int1 + 2.1 # 4 被转换成了 float: 4.0
# str1 = "My int:" + int1 # 抛出错误: str 与 int 不能互相转换
str1 = "My int:" + str(int1)
int2 = 4 + True # 5: bool 可以被转换成 int