python
中
注意:如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用在
python
中,變數的名字類似於便簽紙貼在資料上
**圖示
**圖示
**圖示
變數在b
是第 2 個貼在數字2
上的標籤
python
中,函式的實參/返回值都是是靠引用來傳遞來的
def
test
(num):
print("-" * 50)
print("%d 在函式內的記憶體位址是 %x" % (num, id(num)))
result = 100
print("返回值 %d 在記憶體中的位址是 %x" % (result, id(result)))
print("-" * 50)
return result
a = 10
print("呼叫函式前 記憶體位址是 %x" % id(a))
r = test(a)
print("呼叫函式後 實參記憶體位址是 %x" % id(a))
print("呼叫函式後 返回值記憶體位址是 %x" % id(r))
可變型別,記憶體中的資料可以被修改:
a = 1
a = "hello"
a = [1, 2, 3]
a = [3, 2, 1]
demo_list = [1, 2, 3]
print("定義列表後的記憶體位址 %d" % id(demo_list))
demo_list.pop(0)
demo_list.remove(2)
demo_list[0] = 10
print("修改資料後的記憶體位址 %d" % id(demo_list))
demo_dict =
print("定義字典後的記憶體位址 %d" % id(demo_dict))
demo_dict["age"] = 18
demo_dict.pop("name")
demo_dict["name"] = "老王"
print("修改資料後的記憶體位址 %d" % id(demo_dict))
注意:字典的key
只能使用不可變型別的資料
注意可變型別的資料變化,是通過方法來實現的
如果給乙個可變型別的變數,賦值了乙個新的資料,引用會修改
雜湊
是一種演算法,其作用就是提取資料的特徵碼(指紋)在python
中,設定字典的鍵值對時,會首先對key
進行hash
已決定如何在記憶體中儲存字典的資料,以方便後續對字典的操作:增、刪、改、查
區域性變數的作用
def
demo1
():num = 10
print(num)
num = 20
print("修改後 %d" % num)
defdemo2
():num = 100
print(num)
demo1()
demo2()
print("over")
區域性變數的生命週期# 定義乙個全域性變數
num = 10
defdemo1
():print(num)
defdemo2
():print(num)
demo1()
demo2()
print("over")
注意:函式執行時,需要處理變數時會:
首先查詢函式內部是否存在指定名稱 的區域性變數,如果有,直接使用如果沒有,查詢函式外部是否存在指定名稱 的全域性變數,如果有,直接使用如果還沒有,程式報錯!
1) 函式不能直接修改全域性變數的引用
num = 10
defdemo1
():print("demo1" + "-" * 50)
# 只是定義了乙個區域性變數,不會修改到全域性變數,只是變數名相同而已
num = 100
print(num)
defdemo2
():print("demo2" + "-" * 50)
print(num)
demo1()
demo2()
print("over")
注意:只是在函式內部定義了乙個區域性變數而已,只是變數名相同 —— 在函式內部不能直接修改全域性變數的值2) 在函式內部修改全域性變數的值
num = 10
defdemo1
():print("demo1" + "-" * 50)
# global 關鍵字,告訴 python 直譯器 num 是乙個全域性變數
global num
# 只是定義了乙個區域性變數,不會修改到全域性變數,只是變數名相同而已
num = 100
print(num)
defdemo2
():print("demo2" + "-" * 50)
print(num)
demo1()
demo2()
print("over")
3) 全域性變數定義的位置a = 10
defdemo
():print("%d" % a)
print("%d" % b)
print("%d" % c)
b = 20
demo()
c = 30
注意**結構示意圖如下
4) 全域性變數命名的建議
Python 之 變數高階(理解)
在python中 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 在python中,變數的名字類似於便簽紙貼在資料上 圖示 a 1 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img oxr6okha 1587437433304 media 1498275...
Python 學習筆記之變數
python中變數名規則與其它大多數高階語言一樣,都是受c語言影響。變數名一般由字元 數字 下劃線組成,python 變數名是 大小寫敏感的。python是動態型別語言,不需要預先宣告變數的型別。變數的型別和值在值在賦值那一刻決定。另外,python中,由於記憶體管理是由直譯器負責的,所以開發人員可...
Python基礎之變數型別
python有五個標準的資料型別 python支援四種不同的數值型別 int 有符號整型 long 長整型 也可以代表八進位制和十六進製制 float 浮點型 complex 複數 數字是不可改變的資料型別,這意味著改變量字資料型別會分配乙個新的物件。例子1 coding utf 8 author ...