Python基礎知識 變數和引用

2021-10-07 16:07:15 字數 1280 閱讀 6797

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

在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_;

基礎知識 變數型別

為何變數值 即記錄的資料 要區分型別呢?變數值使用來記錄事物狀態的,而事物的狀態 是各種各樣的,所以對應著就應該用不同型別的值 去記錄這些狀態 作用 記錄描述性質的狀態 定義 在 中包含一串字元 name egon 單行字串 多行字串 msg aaaa bbbb ccc 外層用單引號,內層就應該用雙...

c語言基礎知識 變數

a 3 我們今天主要來談談變數,就是 a 1.變數是什麼 2.變數的三要素int a 讓我們乙個乙個來解釋 變數的型別 變數名變數的定義。3.一點思考 為什麼整形變數會存在溢位現象呢?溢位 int a 2147483647 int b a 1 最終 b 2147483648為什麼浮點型變數會有精度的...

C 基礎知識 變數儲存位置

1.棧區 stack 程式執行時由編譯器自動分配 存放 函式的引數值,區域性變數的值。儲存連續,其操作方式類似於資料結構中的棧。棧區處於相對較高的位址以位址的增長方向為上的話,棧位址是向下增長的,所以空間有限,windows下大多1 2m。2.堆區 heap 在記憶體開闢另一塊儲存區域。一般由程式設...