python
中
注意:如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用在
python
中,變數的名字類似於便簽紙貼在資料上
**圖示
a = 1
**圖示
a = 2
**圖示
b = a
變數在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)
def demo2():
num = 100
print(num)
demo1()
demo2()
print("over")
區域性變數的生命週期
# 定義乙個全域性變數
num = 10
def demo1():
print(num)
def demo2():
print(num)
demo1()
demo2()
print("over")
注意:函式執行時,需要處理變數時會:
首先查詢函式內部是否存在指定名稱 的區域性變數,如果有,直接使用
如果沒有,查詢函式外部是否存在指定名稱 的全域性變數,如果有,直接使用
如果還沒有,程式報錯!
1) 函式不能直接修改全域性變數的引用
num = 10
def demo1():
print("demo1" + "-" * 50)
# 只是定義了乙個區域性變數,不會修改到全域性變數,只是變數名相同而已
num = 100
print(num)
def demo2():
print("demo2" + "-" * 50)
print(num)
demo1()
demo2()
print("over")
注意:只是在函式內部定義了乙個區域性變數而已,只是變數名相同 —— 在函式內部不能直接修改全域性變數的值2) 在函式內部修改全域性變數的值
num = 10
def demo1():
print("demo1" + "-" * 50)
# global 關鍵字,告訴 python 直譯器 num 是乙個全域性變數
global num
# 只是定義了乙個區域性變數,不會修改到全域性變數,只是變數名相同而已
num = 100
print(num)
def demo2():
print("demo2" + "-" * 50)
print(num)
demo1()
demo2()
print("over")
3) 全域性變數定義的位置
a = 10
def demo():
print("%d" % a)
print("%d" % b)
print("%d" % c)
b = 20
demo()
c = 30
注意
**結構示意圖如下
4) 全域性變數命名的建議
Python變數高階(理解)
在python中 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 在python中,函式的實參 返回值都是是靠引用來傳遞來的 def test num print 50 print d 在函式內的記憶體位址是 x num,id num result 100print 返回...
Python變數高階(理解)
在python中 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 在python中,變數的名字類似於便簽紙貼在資料上 變數b是第 2 個貼在數字2上的標籤 在python中,函式的實參 返回值都是是靠引用來傳遞來的 def test num print 50 print ...
Python 之 變數高階(理解)
在python中 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 在python中,變數的名字類似於便簽紙貼在資料上 圖示 a 1 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img oxr6okha 1587437433304 media 1498275...