函式中變數的作用域

2021-09-13 03:16:34 字數 772 閱讀 8723

今天用函式的時候遇到了乙個問題,後來總結了下:

函式中若對變數進行了初始化,則該變數為區域性變數;若沒有初始化而直接對該變數操作,則該變數為全域性變數。一般這種情況出現在列表和字典的使用中。如:

a = 1

b = 1

list =

dict = {}

def ch1():

b = a + 1

def ch3():

dict[『x』] = 1

ch1()

ch2()

ch3()

print(b)

print(list)

print(dict)

執行結果為:

1[10]

list 和 dict 的結果被修改了(b = a +1相當於也對b進行了初始化)

如果ch2()和ch3)()的定義改為

def ch3():

dict =

dict[『x』] = 1

return dict

則執行ch2()和ch3()後

執行結果為1

{}list和dict沒有被修改。

那麼什麼時候需要將變數變成全域性變數呢?可能在進行函式的遞迴時,或者有迴圈時。需要在函式外進行初始化,然後在函式中直接操作,作為全域性變數使用。否則在遞迴過程中每次呼叫函式變數都進行了初始化,之前的結果沒有保留。比如統計檔案個數和大小那道題目。

函式 引數 變數作用域

一 函式引數 1.必須引數 必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。呼叫printme 函式,你必須傳入乙個引數,不然會出現語法錯誤 小括號內的就是引數 小括號內沒東西叫做無參,有叫有參 求任意三個數之和 在定義函式的時候小括號內寫的是變數名字,不需要賦值 在呼叫函式的時候小...

Shell中指令碼變數和函式變數的作用域

在shell中定義函式可以使 模組化,便於復用 不過指令碼本身的變數和函式的變數的作用域問題可能令你費解,在這裡梳理一下這個問題。1 shell指令碼中定義的變數是global的,其作用域從被定義的地方開始,到shell結束或被顯示刪除的地方為止。例1 指令碼變數的作用域 bin bash defi...

Shell中指令碼變數和函式變數的作用域

shell中指令碼變數和函式變數的作用域 在shell中定義函式可以使 模組化,便於復用 不過指令碼本身的變數和函式 的變數的作用域問題可能令你費解,在這裡梳理一下這個問題。1 shell指令碼中定義的變數是global的,其作用域從被定義的地方開始,到shell結束或 被顯示刪除的地方為止。例1 ...