Python 函式高階之不可變和可變引數

2022-04-30 22:33:21 字數 1494 閱讀 7963

1

'''函式高階: 不可變和可變引數

'''2

'''3

可變型別引數:列表_list, 字典_dict

4'''5#

問題1:在函式內部,針對引數使用賦值語句,會不會影響呼叫函式時傳遞的 實參變數?

6'''

7—— 不會!無論實參是可變型別還是不可變型別,

8只要針對引數使用賦值語句,會在函式內部 修改區域性變數的引用,

9不會影響到 外部變數的引用。

10'''11#

例1:12

13def

demo (num, num_list) :

14 num = 200

15 num_list = [1,2,3]

1617

print

(num)

18print

(num_list)

1920

#結論:實參 glnum,glnum_list,經過函式 demo()的賦值語句,其值依然不變!

2122

'''23

問題2:如果傳遞的引數是 "可變型別",在函式內部,使用"方法"修改了引數的值,

24同樣會影響到外部的資料

25'''26#

例2:列表變數呼叫 '+='本質上是在執行列表變數的 extend 方法。

2728

defdemo2 (num_list):

29 num_list.extend([1,2,3])

3031

print

(num_list)

3233

34if

__name__ == "

__main__":

35 glnum = 99

36 glnum_list = [9,8,7]

37demo(glnum,glnum_list)

3839

print

(glnum)

40print

(glnum_list)

41print("

------例1,結束--------")

42print("\n"

)4344demo2(glnum_list)

4546

print("

傳遞值是:[9,8,7];現值是:

", glnum_list)

4748

#執行結果如下:

'''>>> 200

[1, 2, 3]

99[9, 8, 7]

------例1,結束--------

[9, 8, 7, 1, 2, 3]

傳遞值是:[9,8,7];現值是: [9, 8, 7, 1, 2, 3]

'''

Python函式之可變型別與不可變型別

在python語言中,string,tuple,number為不可變型別,但是dict,list為可變型別。所謂的不可變型別就是,a 5實際上指的是吧值為5的記憶體指向a,如果在執行a 10相當於又宣告了乙個值為10的記憶體指向a。例如 結果 兩次列印的a的記憶體位址是不同的。但是對於list的可變...

可變和不可變

可變和不可變 不可變 物件所指向的記憶體中的值是不可以改變 不可變型別 int ser float 元組tuple num 10s1 abc print id s1 s1 abcd print id s1 t1 2 5,6 print id t1 t1 2 5 print id t1 可變的 物件所...

python不可變型別和可變型別

python變數可以分為兩種型別 不可變型別 數字 字串 元組 不可變集合 可變型別 列表 字典 可變集合 python所宣告的變數都以物件的形式存在,存在於機器的固定記憶體之中。可以理解為變數名為物件的指標 如宣告a 3,則a指向儲存3的空間,python通過使用計數器的方式來判斷空間的引用情況,...