< Python全景系列-2 > Python資料型別大盤點

techlead_krischang發表於2023-05-15

<Python全景系列-2> Python資料型別大盤點

歡迎來到我們的系列部落格《Python全景系列》!在這個系列中,我們將帶領你從Python的基礎知識開始,一步步深入到高階話題,幫助你掌握這門強大而靈活的程式設計語法。無論你是程式設計新手,還是有一定基礎的開發者,這個系列都將提供你需要的知識和技能。

Python作為一門強大且靈活的程式語言,擁有豐富的資料型別系統。本文詳細介紹了Python中的每一種資料型別,包括數值、序列、對映、集合、布林和None型別。每種資料型別的特性、使用方式,以及在實際問題中的應用都將被深入探討。此外,我們還將探討Python的動態型別特性,以及如何在實際程式設計中充分利用這些資料型別來簡化程式碼和提高效率。在文章的最後,我還將分享一個可能你還不知道,但非常有用的特性。

1. 數值型別 (Numerics)

Python的數值型別包括整數(Integers)、浮點數(Floating-point numbers)、複數(Complex numbers)、布林值(Booleans)和二進位制型別(Bytes)。

# 整數
x = 10
print(type(x)) # <class 'int'>

# 浮點數
y = 20.5
print(type(y)) # <class 'float'>

# 複數
z = 2 + 3j
print(type(z)) # <class 'complex'>

# 布林值
a = True
print(type(a)) # <class 'bool'>

# 二進位制
b = b"Hello"
print(type(b)) # <class 'bytes'>

Python中的整數型別不僅支援常規的十進位制,還支援二進位制(0b10)、八進位制(0o10)和十六進位制(0x10)。它們的設計讓Python在數學運算上擁有強大的能力。值得注意的是,Python的整數沒有大小限制,這意味著你可以處理非常大的整數,而不用擔心溢位問題。

2. 序列型別 (Sequences)

序列型別包括列表(Lists)、元組(Tuples)、字串(Strings)、位元組陣列(Byte Arrays)和範圍(Ranges)。

# 列表
list_ = [1, 2, 3]
print(type(list_)) # <class 'list'>

# 元組
tuple_ = (1, 2, 3)
print(type(tuple_)) # <class 'tuple'>

# 字串
str_ = "Hello, Python!"
print(type(str_)) # <class 'str'>

# 位元組陣列
bytes_array = bytearray(b"Hello")
print(type(bytes_array)) # <class 'bytearray'>

# 範圍
range_ = range(5)
print(type(range_)) # <class 'range'>

列表是可變的,而元組和字串是不可變的。這個特性決定了它們在Python程式設計中的使用場景。例如,我們可以使用列表來儲存需要動態修改的資料,使用元組來儲存不變的資料序列,使用字串來處理文字資料。

3. 對映型別 (Mappings)

Python的對映型別包括字典(Dictionary)。

# 字典
dict_ = {"name": "Python", "age": 30}
print(type(dict_)) # <class 'dict'>

字典的效能優勢在於查詢和插入速度非常快,不依賴字典的大小,這是因為字典內部的實現使用了雜湊表。這使得字典成為儲存大量資料的理想選擇,特別是當我們需要快速查詢資料時。

字典在Python 3.7以後的版本中已經被最佳化為保持插入順序,這意味著當我們遍歷字典時,元素的順序將與插入時的順序相同。這使得字典在某些情況下可以替代有序字典(OrderedDict)。

4. 集合型別 (Sets)

集合(Set)和凍結集合(FrozenSet)是Python中的兩種集合型別。

```python
# 集合
set_ = {1, 2, 3}
print(type(set_)) # <class 'set'>

# 凍結集合
frozenset_ = frozenset([1, 2, 3])
print(type(frozenset_)) # <class 'frozenset'>
```

集合在處理一些特定問題時非常有用,比如去除重複元素,檢查元素是否存在,求交集、並集、差集等。

5. None型別

Python有一個特殊的型別,叫做NoneType,它只有一個值:None。它常常被用來表示缺失值或者空值。

```python
# None型別
none_ = None
print(type(none_)) # <class 'NoneType'>
```

使用None可以幫助我們區分某個變數是否已經被賦值,或者某個函式是否返回了有效的結果。

在函式中,如果沒有明確的return語句,Python會預設返回None。這使得我們可以很容易地判斷一個函式是否有明確的返回值。

**One More Thing...**

Python的資料型別都是類(class)。這意味著,我們可以像處理物件一樣處理這些資料,呼叫它們的方法,甚至給它們新增屬性。

```python
# 給整數新增屬性
x = 10
x.my_attribute = "Hello"
print(x.my_attribute) # "Hello"
```

雖然這個特性可能不常用,但是它卻給Python的動態性帶來了巨大的可能性。它是Python作為一種物件導向的語言的體現,也是Python的“一切都是物件”哲學的體現。

以上就是Python的全部內建資料型別。理解並熟練應用這些資料型別,是提升Python程式設計技能的基礎。希望這篇部落格能幫助你更好地理解Python的資料型別。如果你有任何問題或者想法,歡迎在評論區留言。

相關文章