python變數高階(理解)

2021-09-22 19:58:03 字數 3824 閱讀 1843

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...