1.python中的可變類型和不可變類型
-
python中的數據類型大致可分為6類:1.Number(數字) 2. String(字符串) 3. Tuple (元組) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布爾類型、int整型、float浮點型、complex復數等都歸為Number數字類型)
這6種數據類型中不可變類型為number、string、tuple,可變類型為:list、dict、set -
不可變類型:不可變類型的變量在第一次賦值聲明的時候,會在內存中開辟一塊空間,用來存儲這個變量被賦予的值,存放這個值的內存空間就是內存中的一個地址,而這個變量存儲的並不是被賦予的值而是存放這個值的內存地址,通過這個地址,變量就可以在內存中取出數據了,所謂不可變就是說,我們不能改變這個數據在內存中的值,所以當我們改變這個變量的賦值時,只是在內存中重新開辟了一塊空間,將新的數據存放到新的內存地址里,而原來那個變量就不再引原數據的的內存地址,而是轉換為引用新數據的內存地址了。
-
可變數據類型:當你第一次賦值聲明了一個可變數據類型的時候, 同樣會在內存中開辟一個空間, 並且將你所賦的數據值放在這塊內存中, 然后將這個變量指向數據所在的內存地址, 不同的是, 可變數據類型可以對內存中的數據直接進行修改, 並且不會導致變量引用地址的變化, 但是這種修改僅限於Python中的內置方法, 比如list.append(), list.remove(), dict.pop(), dict.clear()等, 如果要是進行重新賦值的操作的話, 一樣會改變變量的地址指向。而且當變量重新指向了新的內存之后,之前的內存也就被自動回收了。
2.對於全局變量的修改
- 如果全局變量是不可變類型(number、string、tuple),那么如果想要在函數中對函數變量進行修改,則需要先在函數內,聲明其為global,再進行修改如果是可變類型為(list、dict、set)則可以直接修改