python 之變數高階

2021-10-12 18:47:46 字數 3930 閱讀 4924

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