cpu,記憶體,硬碟
值,理解為實體的資料
變數,理解為資料的稱呼
每乙個值被創造出來,都會有乙個記憶體id號碼。類似於人的身份證號碼。
賦值操作
變數 = 值
a = 「hello」
本質是讓乙個變數名稱指向數值的記憶體位址
我們後面使用變數時,對應記憶體位址的資料就會被使用
函式傳參的本質
函式呼叫時,實參給形參傳值
實際上,本質傳的就是資料的引用(資料的記憶體id位址)
可變型別
列表字典
不可變型別
數字型別
字串元組
不可變型別
首次出現不可變型別的資料時
會先在記憶體中劃出一塊空間,存入不可變型別的資料實體,並且得到了乙個記憶體的id
然後變數獲得這個記憶體id
第二次賦值相同的值的時候,系統會發現記憶體中已經存在這個資料了。
由於該資料是不可變型別,特點就是,資料如果存在,不再建立新的記憶體空間。
如果第二次要用的話,直接使用這個資料的記憶體位址。
m = 12
n = 12
這兩個賦值操作的過程
不可變型別
a = 1
b = 1
的過程首次出現不可變型別1的時候,會在記憶體中劃出一塊空間,儲存資料1
然後1同時會獲得乙個記憶體id
變數a作為乙個標記,標籤,會指向1的記憶體地真正
我們把這種指向叫做引用
第二次b=1
第二次出現資料的1的時候,會在記憶體中檢視,是否有它的存在,如果沒有這個資料1的存在,那麼會建立。
如果資料1存在了,那麼直接使用這個資料1的記憶體位址
同時變數b會指向資料1的記憶體位址
總的看來,變數a 與變數b 他們的資料記憶體位址是一致
可變型別不同的地方就是
不論資料是否是首次出現
只要存在資料的使用,都會是乙個建立的過程,都會在記憶體中劃出一塊區域
通過自已的方法,修改資料(增刪改查),自己的記憶體位址,不變
不可變型別不行
變數名 實際的資料
稱呼, 記憶體位址對應的那個資料
同桌,只是乙個標籤
m > id1, 指向的是id1的資料,訪問m,拿到的就是id1的資料
m > id2,指向的是id2的資料,訪問m, 拿到的就id2 的資料
hash(不可變型別)
數字,字串,元組
指的是變數的有效區域
區域性變數在函式中定義,在函式中使用
函式結束,區域性變數銷亡
全域性變數在函式外,在主**區定義的變數
全域性變數可以在函式中被使用
特別的情況如果在函式內定義了乙個與全域性變數同名的變數
如果全域性變數有num = 1
然後我們在函式內也定義了乙個num=3的時候
再列印num 我們就是直接使用自己範圍內的,函式內的num
引入進來後,對它進行賦值操作,就不再是生成區域性變數了
而是修改全域性變數的值
global 全域性變數名 # 引入全域性變數到函式內部
全域性變數名 = 數值 # 修改全域性變數
明確下面的過程到底經歷了哪些步驟
變數1 = 值1
變數2 = 值1
哪些資料型別是可變型別特點,他們自身有技能(改變自己的技能,增刪改查)
函式的傳參
哪些類據型別是不可變型別特點,他們自身沒有修改自己的技能
可變型別的特點
不可變型別的特點
雜湊
區域性變數定義在函式內部的變數
進入函式後才存活,函式結束就銷亡
全域性變數定義在函式外部的變數
可以被函式使用
區域性變數的命名以g_ 或者 gl_開頭
寫**的堆放位置shebang
匯入模組
全域性變數
函式定義
執行的**
變數的高階用法
語法 說明 從變數開頭進行規則匹配,將符合最短的資料刪除 從變數開頭進行規則匹配,將符合最長的資料刪除 從變數尾部進行規則匹配,將符合最短的資料刪除 從變數尾部進行規則匹配,將符合最長的資料刪除 變數內容符合舊字串則,則第乙個舊字串會被新字串取代 變數內容符合舊字串則,則全部的舊字串會被新字串取代 ...
高階 交換變數
這兩天再練習的時候敲了乙個 交換兩個整型變數的值 類似的問題,分析了三種方式,在這裡做一下分享。1.第一種方式就是非常普遍,也是非常大眾化的方式了,建立乙個臨時變數 include 1.交換兩個整型變數的值 int main 這種方式非常常見,也是很多人剛剛學習c語言的時候使用的方法。2.這裡,我考...
shell變數高階
使用readonly命令可以將變數定義為唯讀變數,唯讀變數的值不允許被修改。bin bash var1 1111 echo var1 1111 var1 2222 echo var1 2222 readonly var1 var1 3333 var1 readonly variable echo v...