Python - 變數



Python 變數

Python 變數是在 Python 程式中用於儲存值的保留記憶體位置。這意味著當您建立變數時,您會在記憶體中保留一些空間。

根據變數的資料型別,Python 直譯器會分配記憶體並決定可以在保留的記憶體中儲存什麼。因此,透過為 Python 變數分配不同的資料型別,您可以在這些變數中儲存整數、小數或字元。

記憶體地址

屬於不同資料型別的資料項儲存在計算機的記憶體中。計算機的記憶體位置內部以二進位制形式表示為數字或地址。資料也以二進位制形式儲存,因為計算機的工作原理是基於二進位制表示。在下圖中,字串May和數字18顯示為儲存在記憶體位置中。

memory

如果您瞭解組合語言,您可以轉換這些資料項和記憶體地址,並提供機器語言指令。但是,這並非對每個人都容易。像 Python 直譯器這樣的語言翻譯器執行此型別的轉換。它將物件儲存在隨機選擇的記憶體位置。Python 的內建id()函式返回物件儲存的地址。

>>> "May"
May
>>> id("May")
2167264641264

>>> 18
18
>>> id(18)
140714055169352

資料一旦儲存在記憶體中,就應該反覆訪問以執行某個過程。顯然,從其 ID 獲取資料很麻煩。像 Python 這樣的高階語言使得可以為記憶體位置提供合適的別名或標籤。

在上面的示例中,讓我們將 May 的位置標記為 month,將儲存 18 的位置標記為 age。Python 使用賦值運算子 (=) 將物件與標籤繫結。

>>> month="May"
>>> age=18

資料物件 (May) 和其名稱 (month) 具有相同的 id()。18 和 age 的 id() 也相同。

>>> id(month)
2167264641264
>>> id(age)
140714055169352

標籤是一個識別符號。它通常稱為變數。Python 變數是一個符號名稱,它是對物件的引用或指標。

建立 Python 變數

Python 變數不需要顯式宣告來保留記憶體空間,或者可以說建立變數。當您為其賦值時,Python 變數會自動建立。等號 (=) 用於為變數賦值。

= 運算子左側的運算元是變數的名稱,= 運算子右側的運算元是儲存在變數中的值。例如:

建立 Python 變數的示例

此示例建立不同型別(整數、浮點數和字串)的變數。

counter = 100          # Creates an integer variable
miles   = 1000.0       # Creates a floating point variable
name    = "Zara Ali"   # Creates a string variable

列印 Python 變數

一旦我們建立了一個 Python 變數併為其賦值,我們就可以使用print()函式列印它。以下是前面示例的擴充套件,並顯示如何在 Python 中列印不同的變數

列印 Python 變數的示例

此示例列印變數。

counter = 100          # Creates an integer variable
miles   = 1000.0       # Creates a floating point variable
name    = "Zara Ali"   # Creates a string variable

print (counter)
print (miles)
print (name)

這裡,100、1000.0 和 "Zara Ali" 分別是分配給countermilesname變數的值。執行上面的 Python 程式時,這將產生以下結果:

100
1000.0
Zara Ali

刪除 Python 變數

您可以使用 del 語句刪除對數字物件的引用。del 語句的語法如下:

del var1[,var2[,var3[....,varN]]]]

您可以使用 del 語句刪除單個物件或多個物件。例如:

del var
del var_a, var_b

示例

以下示例顯示了我們如何刪除變數,如果我們嘗試使用已刪除的變數,則 Python 直譯器將丟擲錯誤

counter = 100
print (counter)

del counter
print (counter)

這將產生以下結果

100
Traceback (most recent call last):
  File "main.py", line 7, in <module>
    print (counter)
NameError: name 'counter' is not defined

獲取變數的型別

可以使用Python內建函式`type()`來獲取Python變數的資料型別,方法如下。

示例:列印變數型別

x = "Zara"
y =  10
z =  10.10

print(type(x))
print(type(y))
print(type(z))

這將產生以下結果

<class 'str'>
<class 'int'>
<class 'float'>

Python變數型別轉換

可以使用型別轉換來指定變數的資料型別,方法如下。

示例

此示例演示了變數的區分大小寫。

x = str(10)    # x will be '10'
y = int(10)    # y will be 10 
z = float(10)  # z will be 10.0

print( "x =", x )
print( "y =", y )
print( "z =", z )

這將產生以下結果

x = 10
y = 10
z = 10.0

Python變數的區分大小寫

Python變數區分大小寫,這意味著Ageage是兩個不同的變數。

age = 20
Age = 30

print( "age =", age )
print( "Age =", Age )

這將產生以下結果

age = 20
Age = 30

Python變數 - 多重賦值

Python允許在一行語句中初始化多個變數。在以下情況下,三個變數具有相同的值。

>>> a=10
>>> b=10
>>> c=10

無需分別賦值,可以像下面這樣在一個賦值語句中完成:

>>> a=b=c=10
>>> print (a,b,c)
10 10 10

在以下情況下,我們有三個具有不同值的變數。

>>> a=10
>>> b=20
>>> c=30

這些單獨的賦值語句可以組合成一個。你需要在`=`運算子的左側用逗號分隔變數名,在右側用逗號分隔值。

>>> a,b,c = 10,20,30
>>> print (a,b,c)
10 20 30

讓我們在指令碼模式下嘗試幾個例子:

a = b = c = 100

print (a)
print (b)
print (c)

這將產生以下結果

100
100
100

這裡,建立一個值為1的整數物件,所有三個變數都被分配到相同的記憶體位置。你也可以將多個物件分配給多個變數。例如:

a,b,c = 1,2,"Zara Ali"

print (a)
print (b)
print (c)

這將產生以下結果

1
2
Zara Ali

這裡,值為1和2的兩個整數物件分別賦值給變數a和b,一個值為“Zara Ali”的字串物件賦值給變數c。

Python變數 - 命名約定

每個Python變數都應該有一個唯一的名稱,例如a、b、c。變數名可以是有意義的,例如color、age、name等。在命名Python變數時,需要注意某些規則。

  • 變數名必須以字母或下劃線字元開頭。
  • 變數名不能以數字或任何特殊字元開頭,例如$、(、*、%等。
  • 變數名只能包含字母數字字元和下劃線(A-z、0-9和_)。
  • Python變數名區分大小寫,這意味著Name和NAME是Python中的兩個不同變數。
  • Python保留關鍵字不能用於變數命名。

如果變數名包含多個單詞,應該使用以下命名模式:

  • 駝峰式命名法 - 第一個字母是小寫,但每個後續單詞的第一個字母是大寫。例如:kmPerHour、pricePerLitre

  • 帕斯卡命名法 - 每個單詞的第一個字母都大寫。例如:KmPerHour、PricePerLitre

  • 蛇形命名法 - 使用單個下劃線(_)字元分隔單詞。例如:km_per_hour、price_per_litre

示例

以下是有效的Python變數名

counter = 100
_count  = 100
name1 = "Zara"
name2 = "Nuha"
Age  = 20
zara_salary = 100000

print (counter)
print (_count)
print (name1)
print (name2)
print (Age)
print (zara_salary)

這將產生以下結果

100
100
Zara
Nuha
20
100000

示例

以下是無效的Python變數名

1counter = 100
$_count  = 100
zara-salary = 100000

print (1counter)
print ($count)
print (zara-salary)

這將產生以下結果

File "main.py", line 3
    1counter = 100
           ^
SyntaxError: invalid syntax

示例

一旦使用變數來標識資料物件,就可以重複使用它而無需其`id()`值。這裡,我們有一個矩形的變數高度和寬度。我們可以用這些變數計算面積和周長。

>>> width=10
>>> height=20
>>> area=width*height
>>> area
200
>>> perimeter=2*(width+height)
>>> perimeter
60

在編寫指令碼或程式時,使用變數尤其有利。以下指令碼也使用了上述變數。

#! /usr/bin/python3

width = 10
height = 20
area = width*height
perimeter = 2*(width+height)
print ("Area = ", area)
print ("Perimeter = ", perimeter)

將上述指令碼儲存為.py副檔名,並從命令列執行。結果將是:

Area = 200
Perimeter = 60

Python區域性變數

Python區域性變數是在函式內部定義的。不能在函式外部訪問變數。

Python函式是一段可重用的程式碼,你將在Python - 函式教程中瞭解更多關於函式的資訊。

示例

以下是一個演示區域性變數用法的示例

def sum(x,y):
   sum = x + y
   return sum
print(sum(5, 10))

這將產生以下結果:

15

Python全域性變數

在函式外部建立的任何變數都可以在任何函式內訪問,因此它們具有全域性作用域。

示例

以下是一個全域性變數的示例:

x = 5
y = 10
def sum():
   sum = x + y
   return sum
print(sum())

這將產生以下結果:

15

Python中的常量

Python沒有正式定義的常量,但是你可以使用全大寫字母加下劃線的方式來指示一個變數被視為常量。例如,名稱PI_VALUE表示你不希望重新定義或更改該變數。

使用全大寫字母的命名約定有時被稱為“尖叫蛇形命名法”——全大寫(尖叫)和下劃線(蛇形)。

Python與C/C++變數

變數的概念在Python中的工作方式與C/C++不同。在C/C++中,變數是命名的記憶體位置。如果a=10,b=10,兩者是兩個不同的記憶體位置。讓我們假設它們的記憶體地址分別是100和200。

named memory location

如果將不同的值賦給“a”——例如50,則地址100中的10將被覆蓋。

Image-20

Python變數引用的是物件而不是記憶體位置。物件只儲存在記憶體中一次。多個變數實際上是對同一物件的多個標籤。

address_100

語句a=50在記憶體中的其他位置建立一個新的int物件50,保留“b”引用的物件10。

address_150

此外,如果你將其他值賦給b,則物件10將保持未被引用。

address_200

Python的垃圾回收機制釋放任何未被引用的物件佔用的記憶體。

Python的同一性運算子is如果兩個運算元具有相同的`id()`值,則返回True。

>>> a=b=10
>>> a is b
True
>>> id(a), id(b)
(140731955278920, 140731955278920)
廣告