天天看點

Python基礎知識:變量和引用

變量和引用

領取Python學習資料可以加小編的微信:tz2020jd

變量和資料都是儲存在記憶體中的;

在python中函數的參數傳遞以及傳回值都是引用傳遞的;

變量和資料是分開存儲的;

變量中記錄資料的位址,就叫做引用;

使用id()函數可以檢視變量中儲存的資料所在的記憶體位址;

注意: 如果變量已經被定義,當給一個變量複制的時候,本質上是修改了資料的引用。① 變量不再對之前的資料引用;②變量改為對新複制的資料引用;

可變類型和不可變類型

不可變類型: 記憶體中的資料不允許修改:

① 數字類型: int、bool、 float、complex、long

② 字元串 :str

③ 元組 :tuple

可變類型: 記憶體中的資料可以被修改

① 清單 list

② 字典 dict

可變類型:變量指派 a=5 後再指派 a=10,這裡實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丢棄,不是改變a的值,相當于新生成了a;

不可變類型: 變量指派 la=[1,2,3,4] 後再指派 la[2]=5 則是将 list la 的第三個元素值更改,本身la沒有動,隻是其内部的一部分值被修改了。

函數參數傳遞時注意:

不可變類型:類似 c++ 的值傳遞,如 整數、字元串、元組。如fun(a),傳遞的隻是a的值,沒有影響a對象本身。比如在 fun(a)内部修改 a 的值,隻是修改另一個複制的對象,不會影響 a 本身。

可變類型:類似 c++ 的引用傳遞,如 清單,字典。如 fun(la),則是将 la 真正的傳過去,修改後fun外部的la也會受影響;

局部變量和全局變量

局部變量:函數内部定義的變量,隻能在函數内部使用;

全局變量: 函數外部定義的變量,所有函數内部都可以使用這個變量;(不推薦使用)

注意: 在python中,不允許修改全局變量的值,如果修改,會在函數中定義一個局部變量;

num = 10

# python中,不允許修改全局變量

def method1():

    num = 99  # 這裡沒有修改全局變量num,而是自己又定義了一個局部變量,執行完這個函數,局部變量就會回收

    print(num)

def method2():

    print(num)  # 雖然在method1中修改了 num 但是卻不會修改

method1()

method2()

# 輸出

# 99

# 10

可以使用global關鍵字修改全局變量的值。

全局變量的命名規則: 前面加上g_ 或者gl_;

領取Python學習資料可以加小編的微信:tz2020jd