python基礎之全局局部變量及函數參數
1.局部變量和全局變量
1.1局部變量
局部變量是在函數內部定義的變量,只能在定義函數的內部使用
函數執行結束後,函數內部的局部變量會被系統收回
不同函數可以定義相同名字的局部變量,但是各用個的互不影響
局部變量的生命周期:
1.所謂生命周期就是變量從被創建到被系統回收的過程
2.局部變量在函數被調用時才會被創建
3.函數執行結束後局部變量被系統回收
4.局部變量在生命周期內,可以用來存儲函數內部臨時使用到的數據
1.2全局變量
全局變量是在函數外部定義的變量(沒有定義在某一個函數內),所有函數內部都可以使用這個變量
註意:函數執行時,在需要處理變量時會:
1.首先查找 函數內部 是否存在 指定名稱的局部變量,如果有,直接使用
2.如果沒有,查找 函數外部 是否存在 指定名稱的全局變量,如果有,直接使用
3.如果還有沒, 程序報錯!
2)函數不能直接修改全局變量的引用
在函數內部可以通過全局變量的引用獲取對應的數據,但是不允許直接修改全局變量的引用
3)在函數內部修改全局變量的值
如果在函數內部需要修改全局變量的值,需要使用關鍵字 global 進行聲明
2.函數的參數
2.1 在函數內部,針對形參使用賦值語句,並不會影響到調用函數時傳遞的實參變量的值
無論傳遞的參數是可變還是不可變,只要針對參數使用賦值語句,只會在函數內部修改局部變量的引用,不會影響到外部變量的引用
>>> def demo(num, list): ... print(‘函數內部代碼‘) #在函數內部,針對參數使用賦值語句,不會修改到外部的實參變量 ... num = 100 ... list = [1,2,3] ... print(num) ... print(list) ... print(‘函數代碼完成‘) ... >>> gl_num = 99 >>> gl_list = [4,5,6]>>> demo(gl_num,gl_list) 函數內部代碼 100 [1, 2, 3] 函數代碼完成 >>> print(gl_num) 99 >>> print(gl_list) [4, 5, 6]
2.2 如果傳遞的參數是可變類型,在函數內部,通過方法修改了數據的內容,同樣會影響到外部的數據
1 def demo(num_list): 2 # 使用方法修改列表的內容 3 num_list.append(9) 4 print(‘函數內部結果:‘, num_list) 5 6 7 gl_list = [1, 2, 3] 8 demo(gl_list) 9 print(‘函數外部結果:‘, gl_list) 10 ---------------------------------------------- 11 函數內部結果: [1, 2, 3, 9] 12 函數外部結果: [1, 2, 3, 9]
3.擴展 列表使用 += 運算符
1 def demo(num, num_list): 2 print("函數開始") 3 # num = num + num 4 num += num 5 6 # 列表變量使用 += 不會像數字一樣做相加再賦值操作 7 # 本質是在調用列表的 extend 方法 8 # num_list.extend(num_list) 9 num_list += num_list 10 print(num) 11 print(num_list) 12 print("函數結束") 13 14 15 gl_num = 10 16 gl_list = [1, 2, 3] 17 demo(gl_num, gl_list) 18 print(gl_num) 19 print(gl_list) 20 -------------------------------------------------------------- 21 函數開始 22 20 23 [1, 2, 3, 1, 2, 3] 24 函數結束 25 10 26 [1, 2, 3, 1, 2, 3]
python基礎之全局局部變量及函數參數