Python 是一門動態語言,提供了多種變量賦值的方式。賦值是Python程序的基本操作之一,它將對象(值)綁定到一個標識符(變量)上。賦值可以使用不同的符號進行操作,也可以通過各種方式進行組合。
一、單個賦值
單個賦值就是將一個對象賦值給一個標識符,語法為:標識符 = 對象。
a = 10
b = "Hello, world!"
在上面例子中,我們使用單個賦值將整數10和一個字符串「Hello, world!」分別賦值給了變量a和b。
在Python中,任何類型的值都可以賦值給變量,例如列表、元組等都可以使用單個賦值進行賦值。
c = [1, 2, 3]
d = (4, 5, 6)
上面的例子中,我們使用單個賦值將一個列表和一個元組分別賦值給了變量c和d。
二、鏈式賦值
鏈式賦值是Python中一種非常方便的語法,可以將一個值同時賦值給多個變量。
e = f = g = 20
在上面這個例子中,我們使用鏈式賦值方式將整數20分別賦值給了變量e、f、g。
三、多個賦值
使用多個賦值語法可以將多個對象同時賦值給多個變量,語法為:標識符1, 標識符2, … = 對象1, 對象2, …。
h, i, j = 1, "two", [3, 4, 5]
在上面這個例子中,我們使用多個賦值語法將整數1、字符串「two」、列表[3, 4, 5]分別賦值給了變量h、i、j。
四、增量賦值
增量賦值可以將變量的值與給定的值相加(或相減、相乘等),並將結果賦給該變量。
Python支持各種類型的增量賦值運算符,例如+=、-=、*=等。
k = 10
k += 5 # 等價於 k = k + 5
在上面這個例子中,我們使用+=增量賦值操作將變量k的值加了5。
五、unpacking賦值
unpacking賦值是Python中一種非常實用的語法,可以將一個序列(列表、元組等)中的值同時賦值給多個變量。
l, m, n = [1, 2, 3]
在上面這個例子中,我們使用unpacking賦值將列表[1, 2, 3]中的三個值分別賦值給了變量l、m、n。
unpacking賦值語法還可以用在字典和集合等類型上。
o, p, q = {"a": 1, "b": 2, "c": 3}.values()
在上面這個例子中,我們使用unpacking賦值將字典的values()方法返回的三個值分別賦值給了變量o、p、q。
六、globals()與locals()
Python中的globals()和locals()函數可以用來獲取全局和局部命名空間中的所有標識符及其對應的值。
x = 10
y = 20
def func():
z = 30
print(globals()) # 獲取全局命名空間中的標識符
print(locals()) # 獲取局部命名空間中的標識符
func()
在上面這個例子中,我們定義了三個變量x、y、z,並將全局命名空間和局部命名空間中的標識符分別打印出來。
七、深拷貝與淺拷貝
在Python中,變量賦值之後,如果是可變類型(如列表、字典等),對原對象的修改將會影響到所有引用它的變量,這就涉及到了深拷貝和淺拷貝的概念。
淺拷貝只拷貝了對象引用,而沒有拷貝對象本身。Python中的copy()方法就是進行淺拷貝的方法。
a = [1, 2, 3]
b = a.copy() # 淺拷貝
b[1] = 5 # 修改隻影響了b,不會影響a
print(a)
print(b)
在上面這個例子中,我們使用copy()方法進行了淺拷貝,並嘗試了修改淺拷貝後的列表中的一個值,發現隻影響了拷貝後的列表,原列表並未被修改。
深拷貝則是完全複製了對象及其對象內部包含的所有對象。Python中的copy模塊提供了深拷貝的方法copy.deepcopy()。
import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a) # 深拷貝
b[2][0] = 5 # 修改隻影響了b,不會影響a
print(a)
print(b)
在上面這個例子中,我們使用deepcopy()方法進行深拷貝,並嘗試了修改拷貝後的列表中的一個嵌套列表中的一個值,發現隻影響了拷貝後的列表,原列表並未被修改。
八、結語
賦值是Python程序的基本操作之一,掌握不同類型的賦值語法,可以輕易地實現複雜的邏輯操作。本文介紹了Python中常用的賦值語法,並通過實例進行了詳細解釋。
原創文章,作者:PPXAO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/331759.html