Python 變數和資料型別

Jinku Hu 2023年1月30日
  1. Python 變數
  2. Python 資料型別
Python 變數和資料型別

在本節中, 我們將來學習 Python 中的變數和資料型別。

Python 變數

變數是具有名稱和值 (一些資料) 的記憶體位置。

變數具有唯一的名稱, 以便來區分不同的記憶體位置。它們具有同識別符號相同的命名規則

在 Python 中, 在使用該變數之前不需要宣告變數 (指定資料型別)。如果要新建變數, 只需賦予該變數一個有效的名稱, 並使用賦值運算子為其賦值。變數的資料型別將根據分配給它的值的型別自動來定義。

變數賦值

賦值運算子 = 用於為變數分配數值。Python 中,你可以為變數分配任何型別的值。

下面的程式碼是賦值運算子的例子,你可以將不同的資料類似賦值給變數。

x = 3
y = 4.124
z = "Python"

這裡有整形、浮點和字串變數。

多重賦值

你也可以在單個 Python 語句中將值分配給多個變數。這稱為多重賦值。比如下面的例子,

x, y, z = 2, 4.124, "Python"

這裡 2 被分配給 x,4.124 被分配給 y,字串 Python 被分配給 z

如果你想為不同的變數賦於相同的值,你可以這樣來寫:

x = y = z = "Blue"

現在三個變數都是相等的。

Warning
將列表型別的資料用像上面這樣的方式賦值給兩個或者多個變數,是很危險的。多個變數都指向相同的記憶體位置,因此,對於一個可變型別的變數,如果一個變數修改了值,那其他所有變數的值都被修改了。如果你沒有意識到這一點,你可能會在程式執行中被坑的很慘。

Python 資料型別

每當你為變數賦值時, 變數的資料型別也隨之確定下來。Python 是物件導向的程式設計, Python 中的所有的元素都是物件。

在 Python 中, 變數的資料型別實際上是類, 其中的變數是例項 (物件)。

下面是 Python 中的一些資料型別:

數字

整數、浮點和複數等數字都是 Python 數字。在 Python 中, 整數由 int 表示、浮點用 float 表示,以及複數用 complex 類來表示。

內建函式 type() 可用於檢查變數的資料型別或變數所屬的類。

內建函式 isinstance() 可用於檢查物件是否是特定的類的例項或其子類別。它的第一個引數是物件本身, 第二個是要與之進行比較的資料型別。

x = 3
print("type of", x, "is", type(x))
x = 3.23
print("type of", x, "is", type(x))
x = 3 + 3j
print("is", x, "a complex number:", isinstance(x, complex))
type of 3 is <class 'int'>
type of 3.23 is <class 'float'>
is (3+3j) a complex number: True

列表 list

列表是(不同的)資料型別的元素的有序序列。你可以使用方括號 [] 在建立列表,並在方括號內使用逗號分隔列表項。

x = [2, 4.5, "blue"]

要訪問列表的成員,可以使用在 Python 中被稱為切片運算子的索引訪問運算子 []。列表元素的索引從 0 開始。下面來舉個例子,

x = [2, 4, 6, 8, 10]
print("x[0] =", x[0])  # 列印第一個元素
print("x[0:2] =", x[0:2])  # 列印前兩個元素,位於索引位置 0 和 1
print("x[2:] =", x[2:])  # 列印從索引位置 2 開始的所有元素
x[0] = 2
x[0:2] = [2, 4]
x[2:] = [6, 8, 10]

Python 列表中的專案可以更改的(更新,刪除,新增)。換句話說,Python 列表是可變的。

Note
Python 列表是可變型別的。

元組 tuple

元組也是與列表類似的一種有序序列。元組和列表之間的重要區別是元組元素是不可變的。你可以用小括號 () 來定義一個 Python 元組,元素間用逗號分隔:

x = (3, "pink", 3 + 8j)
print("x[0] =", x[0])
print("x[0:2] =", x[0:2])
x[0] = 4
x[0] = 3
x[0:2] = (3, 'pink')
TypeError: 'tuple' object does not support item assignment
Note
Python 元組是不可變型別的。

字串 String

字串是一個字元序列。可以使用單引號或雙引號來建立字串,還可以使用三重引號來建立多行字串。

x = "String of characters"
x = """Multiline
string"""

你可以通過切片操作符來訪問字串裡面的元素,也就是字元資料。

x = "Python Programming"
print("x[0] =", x[0])
print("x[4:15] =", x[4:15])
x[4] = "l"
x[0] = P
x[4:15] = on Programm
TypeError: 'str' object does not support item assignment
Note
Python 字串是不可變型別的。

集合 Set

Python 集合中的每個元素都是唯一的,並且集合是無序的元素列表。Python 中的集合可以使用大括號 {} 來建立,而元素之間用逗號分隔。

x = {3, 5, 7, 2, 4, 5}
print(x)  # 列印集合
print(type(x))  # 檢視變數 x 的資料型別
{2, 3, 4, 5, 7}
<class 'set'>
Note
Python 集合是不可變型別的。

字典 Dictionary

Python 字典是 Python 的一種原生資料型別,它的元素是鍵-值對。一個字典包含無序的元素。如果你知道鍵,那就可以檢索出對應的資料或值。

可以使用大括號 {} 將每個元素都作為包含鍵和值的對來建立字典。Python 字典中的鍵和值可以是任何型別,但其中鍵的資料型別必須是不可變型別的,比如字串元組等,列表是不能作為 Python 字典元素裡的鍵的。

下面來舉些例子,

x = {1: "blue", "key": "pink"}
print(type(x))
print("x[1] = ", x[1])
print("x['key'] =", x["key"])
<class 'dict'>
x[1] =  blue
x['key'] = pink
Note
Python 字典是可變資料型別。

型別轉換

Python 變數可以轉換為其他的資料型別變數,例如,可以將 int 資料型別轉換為浮點資料型別 float。對於型別轉換,你可以使用像 int()float(),str() 等轉換函式來進行資料轉換。

x = 8
print("Value of x = ", int(x))
print("Value of x = ", float(x))
Value of x =  8
Value of x =  8.0

如果你想將 float 值轉換為 int 值,那麼小數部分將被捨棄。

>>> y = 3.4
>>> print("Converting float to int:", int(y))
Converting float to int: 3

如果要將字串資料型別轉換為另一種型別,則必須提供相容的資料,否則你將得到一個 ValueError

>>> print("Converting string to float:", float('33.9'))
Converting string to float: 33.9
>>> print("Converting string to float:", float('text'))
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    float('a')
ValueError: could not convert string to float: text

你可以將一個序列轉換為另一個序列,例如,使用 list()set()tuple() 等函式完成集合,元組或列表等的轉換。

print(set([4, 5, 6]))
print(tuple({8, 9, 10}))
print(list("Python"))
{4, 5, 6}
(8, 9, 10)
["P", "y", "t", "h", "o", "n"]
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook