在 Python 中,變量不一定占用內存變量。變量就像是對某一處內存的引用,可以通過變量訪問到其所指向的內存中的值,並且可以讓變量指向其他的內存。在 Python 中,變量不需要聲明,但是使用變量之前,一定要先對變量進行賦值。當創建了一個新對象時,Python 會向操作系統請求內存,Python 本身實現了內存分配系統。變量類型指的是變量所指向的內存中 對象 的類型。Python 中變量賦值使用 = 等號,等號左面為創建的變量,等號右面為需要的值。
# #創建一個變量名為 a 的變量 # a = 3 # # 創建了一個 a 變量 # # 對 a 變量進行輸出 # print("a = ",a) # # a = 3 # print("a 變量存儲數據的類型為:",type(a)) # # a 變量存儲數據的類型為: <class 'int'> # print("a 變量的地址為:",id(a)) # # a 變量的地址為: 140734656704848 # # 修改 a 的指向 # a = 4 # print("a = ",a) # # a = 4 # print("a 變量存儲數據的類型為:",type(a)) # # a 變量存儲數據的類型為: <class 'int'> # print("a 變量的地址為:",id(a)) # # a 變量的地址為: 140734656704880
變量包含的內容主要包含四個方面:
1.變量的名稱:在對變量賦值時也就是創建變量時所使用的名字。注:根據標識符規則。
2.變量保存的數據:通常為賦值時 = 等號 右面的對象。
對象主要包括:
①.數字:int 、float 、complex 、bool、表達式、函數調用返回值等。
數字: int 表示整數,包含正數,負數,0
float 表示浮點數,帶有小數點的數
complex 表示復數,實部 + 虛部 J 或 j 均可
a = 1+2J b = 5+6j print("a = {0},b = {1}".format(a,b)) # a = (1+2j),b = (5+6j)
bool 布爾類型,True 為真,False 為假
②.字符串:字符串變量、帶有" "的字符串、表達式、函數調用的返回值等。
注:Python3 以 Unicode 編碼方式編碼。
使用雙引號 " " 或單引號 ' ' 創建字符串或者進行強制轉換 str 。
③.列表:列表變量、帶有 [ ] 的對象、表達式、函數調用的返回值等。
使用了 [ ] 的,[ ] 內可以是數字,字符串,字典,元組,列表,集合,表達式等。
# lst = [1,2,3] # print(lst) # # [1, 2, 3] # # lst = [1.1,2.2,3.3] # print(lst) # # [1.1, 2.2, 3.3] # # lst = [1.3+4j,2+5J,3+9j] # print(lst) # # 復數 # # [(1+4j), (2+5j), (3+9j)] # # lst = ['1','2','3'] # print(lst) # # ['1', '2', '3'] # # lst = [{'a':1},{'b':2},{'c':3}] # print(lst) # # [{'a': 1}, {'b': 2}, {'c': 3}] # # # lst = [(1,2,3)] # print(lst) # # [(1, 2, 3)] # # lst = [{1,2,3}] # print(lst) # # [{1, 2, 3}]
④.元組:元組變量、帶有逗號的或被( )包圍的多個變量或值、表達式、函數調用的返回值等。
空元組 ( )
創建一個只包含數字 1 的元素的元組 (1,) 注:一定要帶有 , 號
創建包含多個元素的元組,可以直接用 (元素1,元素2,...,元素n) 賦值
或者元素1,元素2,...,元素n ,使用,逗號進行賦值
⑤.集合:空集合 set( )、使用了{ }的內部為單個變量或值、表達式、函數調用的返回值等。
空集合 set( )
創建多個元素的集合,{元素1,元素2,...,元素n}
注:集合中元素不重復,可利用此特性判斷別的序列對象是否存在重復元素。
⑥.字典:字典變量、帶有 {鍵:值} 的變量或值、表達式、函數調用的返回值等。
空字典 { }
創建多個元素的字典,變量名 = {鍵1:值1,鍵2:值2,...,鍵n:值n}
⑦.類:通常為類創建實例時,函數調用的返回值等。
class關鍵字聲明。
⑧.函數:函數名、函數調用等。
def 關鍵字聲明,在函數前可能會有裝飾器。另外,函數可以嵌套函數,當內部函數使用了外部函數的某些對象時稱為閉包函數。
注:表達式是指關於對象之間的運算。
下面以數字數據類型為例:
# 數字數據類型 num_int = 123 print(num_int) # 123 num_float = 2.4 print(num_float) # 2.4 num_complex = 5+6j print(num_complex) # (5+6j) num_bool_true = True print(num_bool_true) # True # bds 表達式的意思, 只計算最簡單的表達式 num_int_bds = num_int + num_int print(num_int_bds) # 246 num_float_bds = num_float + num_float print(num_float_bds) # 4.8 num_complex_bds = num_complex + num_complex print(num_complex_bds) # (10+12j) num_bool_true_bds = not num_bool_true print(num_bool_true_bds) # False # 定義一個具有返回值的函數 def add(x): ''' 對 x 進行相加操作''' return x+x num_int_def = add(num_int) print(num_int_def) # 246 num_float_def = add(num_float) print(num_float_def) # 4.8 num_complex_def = add(num_complex) print(num_complex_def) # (10+12j) num_bool_true_def = add(num_bool_true) print(num_bool_true_def) # 2
3.變量存儲數據的類型,可以通過 type(變量名) 函數獲取。對數字數據類型使用 type 函數如下:
num_int = 123 print(type(num_int)) # <class 'int'> num_float = 12.23 print(type(num_float)) # <class 'float'> num_bool = True print(type(num_bool)) # <class 'bool'> num_complex = 5+6j print(type(num_complex)) # <class 'complex'>
4.變量的地址,也就是所指向的內存中的地址。使用 id(變量名) 函數獲取。
# 查看 a 的內存地址 a = 123 print(id(a)) # 140734656708688
在上面的例子中,我們看到的都是賦值單個元素,那么可不可以賦值多個元素呢?
答案是肯定的。Python支持同時為多個變量賦值,如下所示:
# #多個變量進行賦值 # a = b = c = 1 # print("a = {0}, b = {1}, c = {2}".format(a,b,c)) # # a = 1, b = 1, c = 1 # # a,b = 1,2 # print("a = {0},b = {1}".format(a,b)) # # 注 a,b 多用於交換 a,b 兩個元素的值 # # 接收函數返回的兩個值 # # 接收元組等序列對象的前兩個值 # # a = 1,b = 2 # # 1.交換兩個元素的值 # a,b = b,a # # 進行交換 a b 兩個對象的指向 # print("a = {0},b = {1}".format(a,b)) # # a = 2,b = 1 # # def hello_world(): # # 返回兩個字符串的函數 # return "hello","world" # # a,b = hello_world() # # a 接收第一個返回的對象,b 接收第二個 如果還有元素接收,則依次遞增 # print(a,b) # # hello world # tuple_1 = (5,6) # # 創建一個元組 # a,b = tuple_1 # print("a = {0},b = {1}".format(a,b)) # # a 接收第一個返回的對象,b 接收第二個 如果還有元素接收,則依次遞增 # # a = 5,b = 6
2020-02-04