Python變數型別


變數是儲存儲存值的記憶體位置。也就是說,當建立一個變數時,可以在記憶體中保留一些空間。

基於變數的資料型別,直譯器分配記憶體並決定可以儲存在保留的儲存器中的內容。 因此,通過為變數分配不同的資料型別,可以在這些變數中儲存的資料型別為整數,小數或字元等等。

將值分配給變數

在Python中,變數不需要明確的宣告型別來保留記憶體空間。當向變數分配值時,Python會自動發出宣告。 等號(=)用於為變數賦值。

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

#!/usr/bin/python3

counter = 100          # 一個整型數
miles   = 999.99       # 一個浮點數
name    = "Maxsu"       # 一個字串
site_url  = "https://www.tw511.com" # 一個字串

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

這裡,100,999.99和「Maxsu」分別是分配給countermilesname變數的值。執行上面程式碼將產生以下結果 -

100
999.99 
Maxsu
https://www.tw511.com

多重賦值

Python允許同時為多個變數分配單個值。

例如 -

a = b = c = 1

這裡,建立一個整數物件,其值為1,並且所有三個變數都分配給相同的記憶體位置。還可以將多個物件分配給多個變數。 例如 -

a, b, c = 10, 20, "maxsu"

這裡,將兩個值為1020的整數物件分別分配給變數ab,並將一個值為「maxsu」的字串物件分配給變數c

標準資料型別

儲存在記憶體中的資料可以是多種型別。 例如,一個人的年齡可儲存為一個數位值,他的地址被儲存為字母數位字串。 Python具有各種標準資料型別,用於定義可能的操作以及每個標準資料型別的儲存方法。

Python有五種標準資料型別 -

  • 1.數位
  • 2.字串
  • 3.列表
  • 4.元組
  • 5.字典

1.Python數位

數位資料型別儲存數位值。當為其分配值時,將建立數位物件。 例如 -

var1 = 10
var2 = 20

可以使用del語句刪除對數位物件的參照。 del語句的語法是 -

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

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

例如 -

del var
del var_a, var_b

Python支援三種不同的數值型別 -

  • int(有符號整數)
  • float(浮點實值)
  • complex(複數)

Python3中的所有整數都表示為長整數。 因此,長整數沒有單獨的數位型別。

例子

以下是一些數位範例 -

int float complex
10 0.0 3.14j
100 15.20 45.j
-786 -21.9 9.322e-36j
080 32.3+e18 .876j
-0490 -90. -.6545+0J
-0x260 -32.54e100 3e+26J
0x69 70.2-E12 4.53e-7j

複數是由x + yj表示的有序對的實數浮點陣列成,其中xy是實數,j是虛數單位。

2.Python字串

Python中的字串被標識為在引號中表示的連續字元集。Python允許雙引號或雙引號。 可以使用片段運算子([][:])來獲取字串的子集(子字串),其索引從字串開始處的索引0開始,並且以-1表示字串中的最後一個字元。

加號(+)是字串連線運算子,星號(*)是重複運算子。例如 -

#!/usr/bin/python3
#coding=utf-8
# save file: variable_types_str1.py

str = 'tw511.com'

print ('str = ', str)          # Prints complete string
print ('str[0] = ',str[0])       # Prints first character of the string
print ('str[2:5] = ',str[2:5])     # Prints characters starting from 3rd to 5th
print ('str[2:] = ',str[2:])      # Prints string starting from 3rd character
print ('str[-1] = ',str[-1])      # 最後一個字元,結果為:'!'
print ('str * 2 = ',str * 2)      # Prints string two times
print ('str + "TEST" = ',str + "TEST") # Prints concatenated string

將上面程式碼儲存到 variable_types_str1.py 檔案中,執行將產生以下結果 -

F:\worksp\python>python variable_types_str1.py
str =  tw511.com
str[0] =  y
str[2:5] =  iba
str[2:] =  ibai.com
str[-1] =  m
str * 2 =  tw511.comtw511.com
str + "TEST" =  tw511.comTEST

F:\worksp\python>

2.Python列表

列表是Python複合資料型別中最多功能的。 一個列表包含用逗號分隔並括在方括號([])中的專案。在某種程度上,列表類似於C語言中的陣列。它們之間的區別之一是Python列表的所有項可以是不同的資料型別,而C語言中的陣列只能是同種型別。

儲存在列表中的值可以使用切片運算子([][])來存取,索引從列表開頭的0開始,並且以-1表示列表中的最後一個專案。 加號(+)是列表連線運算子,星號(*)是重複運算子。例如 -

#!/usr/bin/python3
#coding=utf-8
# save file: variable_types_str1.py
list = [ 'yes', 'no', 786 , 2.23, 'minsu', 70.2 ]
tinylist = [100, 'maxsu']

print ('list = ', list)          # Prints complete list
print ('list[0] = ',list[0])       # Prints first element of the list
print ('list[1:3] = ',list[1:3])     # Prints elements starting from 2nd till 3rd 
print ('list[2:] = ',list[2:])      # Prints elements starting from 3rd element
print ('list[-3:-1] = ',list[-3:-1])    
print ('tinylist * 2 = ',tinylist * 2)  # Prints list two times
print ('list + tinylist = ', list + tinylist) # Prints concatenated lists

將上面程式碼儲存到 variable_types_str1.py 檔案中,執行將產生以下結果 -

F:\worksp\python>python variable_types_list.py
list =  ['yes', 'no', 786, 2.23, 'minsu', 70.2]
list[0] =  yes
list[1:3] =  ['no', 786]
list[2:] =  [786, 2.23, 'minsu', 70.2]
list[-3:-1] =  [2.23, 'minsu']
tinylist * 2 =  [100, 'maxsu', 100, 'maxsu']
list + tinylist =  ['yes', 'no', 786, 2.23, 'minsu', 70.2, 100, 'maxsu']

F:\worksp\python>

3.Python元組

元組是與列表非常類似的另一個序列資料型別。元組是由多個值以逗號分隔。然而,與列表不同,元組被括在小括號內(())。

列表和元組之間的主要區別是 - 列表括在括號([])中,列表中的元素和大小可以更改,而元組括在括號(())中,無法更新。元組可以被認為是唯讀列表。 例如 -

#!/usr/bin/python3
#coding=utf-8
# save file : variable_types_tuple.py
tuple = ( 'maxsu', 786 , 2.23, 'yiibai', 70.2  )
tinytuple = (999.0, 'maxsu')

# tuple[1] = 'new item value' 不能這樣賦值

print ('tuple = ', tuple)           # Prints complete tuple
print ('tuple[0] = ', tuple[0])        # Prints first element of the tuple
print ('tuple[1:3] = ', tuple[1:3])      # Prints elements starting from 2nd till 3rd 
print ('tuple[-3:-1] = ', tuple[-3:-1])       # 輸出結果是什麼?
print ('tuple[2:] = ', tuple[2:])       # Prints elements starting from 3rd element
print ('tinytuple * 2 = ',tinytuple * 2)   # Prints tuple two times
print ('tuple + tinytuple = ', tuple + tinytuple) # Prints concatenated tuple

將上面程式碼儲存到 variable_types_tuple.py 檔案中,執行將產生以下結果 -

F:\worksp\python>python variable_types_tuple.py
tuple =  ('maxsu', 786, 2.23, 'yiibai', 70.2)
tuple[0] =  maxsu
tuple[1:3] =  (786, 2.23)
tuple[-3:-1] =  (2.23, 'yiibai')
tuple[2:] =  (2.23, 'yiibai', 70.2)
tinytuple * 2 =  (999.0, 'maxsu', 999.0, 'maxsu')
tuple + tinytuple =  ('maxsu', 786, 2.23, 'yiibai', 70.2, 999.0, 'maxsu')

F:\worksp\python>

以下程式碼對於元組無效,因為嘗試更新元組,但是元組是不允許更新的。類似的情況可能與列表 -

#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # 無法更新值,程式出錯
list[2] = 1000     # 有效的更新,合法

Python字典

Python的字典是一種雜湊表型別。它們像Perl中發現的關聯陣列或雜湊一樣工作,由鍵值對組成。字典鍵幾乎可以是任何Python資料型別,但通常為了方便使用數位或字串。另一方面,值可以是任意任意的Python物件。

字典由大括號({})括起來,可以使用方括號([])分配和存取值。例如 -

#!/usr/bin/python3
#coding=utf-8
# save file : variable_types_dict.py

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is my"

tinydict = {'name': 'maxsu', 'code' : 1024, 'dept':'IT Dev'}


print ("dict['one'] = ", dict['one'])       # Prints value for 'one' key
print ('dict[2] = ', dict[2])           # Prints value for 2 key
print ('tinydict = ', tinydict)          # Prints complete dictionary
print ('tinydict.keys() = ', tinydict.keys())   # Prints all the keys
print ('tinydict.values() = ', tinydict.values()) # Prints all the values

將上面程式碼儲存到 variable_types_dict.py 檔案中,執行將產生以下結果 -

F:\worksp\python>python variable_types_dict.py
dict['one'] =  This is one
dict[2] =  This is my
tinydict =  {'name': 'maxsu', 'code': 1024, 'dept': 'IT Dev'}
tinydict.keys() =  dict_keys(['name', 'code', 'dept'])
tinydict.values() =  dict_values(['maxsu', 1024, 'IT Dev'])

字典中的元素沒有順序的概念。但是說這些元素是「亂序」是不正確的; 它們是無序的。

資料型別轉換

有時,可能需要在內建型別之間執行轉換。要在型別之間進行轉換,只需使用型別名稱作為函式即可。

有以下幾種內建函式用於執行從一種資料型別到另一種資料型別的轉換。這些函式返回一個表示轉換值的新物件。它們分別如下所示 -

編號 函式 描述
1 int(x [,base]) x轉換為整數。如果x是字串,則要base指定基數。
2 float(x) x轉換為浮點數。
3 complex(real [,imag]) 建立一個複數。
4 str(x) 將物件x轉換為字串表示形式。
5 repr(x) 將物件x轉換為表示式字串。
6 eval(str) 評估求值一個字串並返回一個物件。
7 tuple(s) s轉換為元組。
8 list(s) s轉換為列表。
9 set(s) s轉換為集合。
10 dict(d) 建立一個字典,d必須是(key,value)元組的序列
11 frozenset(s) s轉換為凍結集
12 chr(x) 將整數x轉換為字元
13 unichr(x) 將整數x轉換為Unicode字元。
14 ord(x) 將單個字元x轉換為其整數值。
15 hex(x) 將整數x轉換為十六進位制字串。
16 oct(x) 將整數x轉換為八進位制字串。