Python3變數型別


變數是什麼東西?只不過是保留在儲存器位置的儲存值。這意味著,當我們建立一個變數,需要在記憶體中保留一些空間。

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

賦值給變數

Python變數不需要顯式宣告保留記憶體空間。當賦值給一個變數這些宣告自動發生。等號(=)是用來賦值給變數。

=運算子的左邊是變數名稱,而 =運算子右側是儲存在變數的值。例如 -
#!/usr/bin/python3

counter = 100          # An integer assignment
miles   = 1000.0       # A floating point
name    = "John"       # A string

print (counter)
print (miles)
print (name)
在這裡,100,1000.0和「John」這幾個值分別分配給counter,miles和 name 變數。這將產生以下結果-
100
1000.0
John

多重賦值

Python允許同時分配一個值給幾個變數。例如 -
a = b = c = 1 

這裡,一個整數物件使用數值1來建立,並且所有三個變數都分配到相同的儲存器位置。也可以將多個物件同時分配多個變數。例如 -

a, b, c = 1, 2, "john" 

這裡,兩個整數物件使用值1和2分別指定給變數a和b,以及「john」字串物件值賦給變數c。

標準資料型別

儲存在記憶體中的資料可以是多種型別的。例如,一個人的年齡可儲存為數值,而他或她的地址則可儲存為字母、數位和字元。Python有用於定義儲存方法操作的各種標準資料型別。

Python 有五個標準資料型別 -
  • 數位
  • 字串

  • 列表

  • 元組

  • 字典

Python數位

數位資料型別儲存數值。當分配一個值給建立數值物件。 例如?

var1 = 1
var2 = 10 

您也可以通過使用 del 語句刪除參照的那一個數位物件。del 語句的語法是 -

del var1[,var2[,var3[....,varN]]]]
可以通過使用del語句刪除單個或多個物件。例如 -
del var
del var_a, var_b
Python支援四種不同的數位型別 -
  • int (有符號整數)

  • float (浮點實數值)

  • complex (複數)

在Python3所有整數表示為長整型。因此,沒有單獨為long的整數型別。

範例

下面是數位的例子 -
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 來表示實浮點數, 其中 x 和 y 是實數並且 j 是虛數單位。

Python字串

字串在 Python 為一組連續的引號表示的字元。Python允許對單引號或雙引號對。 字串子集可以用切片操作符 ([ ] and [:] ) :字串的索引從0開始,並以-1結束。加號(+)號是字串連線運算子和星號(*)是重複操作符。例如 -

#!/usr/bin/python3

str = 'Hello World!'

print (str)          # Prints complete string
print (str[0])       # Prints first character of the string
print (str[2:5])     # Prints characters starting from 3rd to 5th
print (str[2:])      # Prints string starting from 3rd character
print (str * 2)      # Prints string two times
print (str + "TEST") # Prints concatenated string
這將產生以下結果 -
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Python列表

列表是最通用的Python複合資料型別。列表中包含用逗號分隔並使用方括號[]來包含專案。從某種程度上講,列表類似於C語言中的陣列。一個較大的區別是,所有在一個列表中的專案可以是不同的資料型別。

儲存在一個列表中的值可以使用切片操作符([]和[:])進行存取:列表的0索引位置為起點位置,並在以-1 結束。 加號(+)號是列表中連線運算,星號(*)是重複操作符。例如 -

#!/usr/bin/python3

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print (list)          # Prints complete list
print (list[0])       # Prints first element of the list
print (list[1:3])     # Prints elements starting from 2nd till 3rd 
print (list[2:])      # Prints elements starting from 3rd element
print (tinylist * 2)  # Prints list two times
print (list + tinylist) # Prints concatenated lists
這產生以下結果 -
['abcd', 786, 2.23, 'john', 70.200000000000003]
abcd
[786, 2.23]
[2.23, 'john', 70.200000000000003]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john']

Python元組

元組是另一個序列資料型別,它類似於列表。元組中使用單個逗號來分隔每個值。不像列表,元組的值是放列在圓括號中。

列表和元組之間的主要區別是:列表是包含在方括號[]中,並且它們的元素和大小是可以改變的,而元組元素是括在括號()中,不能進行更新。元組可以被認為是唯讀的列表。例如 -

#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print (tuple)           # Prints complete tuple
print (tuple[0])        # Prints first element of the tuple
print (tuple[1:3])      # Prints elements starting from 2nd till 3rd 
print (tuple[2:])       # Prints elements starting from 3rd element
print (tinytuple * 2)   # Prints tuple two times
print (tuple + tinytuple) # Prints concatenated tuple
這產生以下結果 -
('abcd', 786, 2.23, 'john', 70.200000000000003)
abcd
(786, 2.23)
(2.23, 'john', 70.200000000000003)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john')
以下使用元組的程式碼是無效,因為我們試著要更新元組,這是不允許的。列表中類似的情況是 - 
#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list

Python字典

Python字典是一種雜湊表型別。它們工作的方式就類似在Perl中關聯陣列或雜湊、鍵-值對。字典的鍵可以是幾乎任何Python型別,但通常是數位或字串。另一方面,它的值可以是任意Python物件。

字典是用大括號括起來({}),並且值可分配並使用方括號([])來存取。例如-
#!/usr/bin/python3

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

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print (dict['one'])       # Prints value for 'one' key
print (dict[2])           # Prints value for 2 key
print (tinydict)          # Prints complete dictionary
print (tinydict.keys())   # Prints all the keys
print (tinydict.values()) # Prints all the values
這產生以下結果 -
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john'] 

字典中沒有元素順序(排序)的概念。這是不正確的說,元素是「亂序」; 它們僅僅是無序的。

資料型別轉換

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

有幾個內建函式從一種資料型別轉換到另一個。這些函式返回代表轉換後的值的新物件。

函式 描述

int(x [,base])

轉換x為整數。x是字串則 base 為指定的基數

float(x)

轉換x為一個浮點數

complex(real [,imag])

建立一個複數

str(x)

轉換物件x為字串表示

repr(x)

轉換物件x為表示式字串

eval(str)

計算一個字串,並返回一個物件

tuple(s)

轉換s為一個元組

list(s)

轉換s為一個列表

set(s)

轉換s為一個集合

dict(d)

建立一個字典。 d必須是(鍵,值)元組序列

frozenset(s)

轉換s為冷凍集

chr(x)

將一個字元轉換為整數

unichr(x)

Unicode字元轉換為整數

ord(x)

單個字元其轉換為整數值

hex(x)

十六進位制字串轉換為整數

oct(x)

轉換整數成為八進位制字串