python 函式區域性變數與全域性變數

2021-10-23 10:16:51 字數 1345 閱讀 6979

區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖在超出範圍的地方呼叫,程式就爆掉了

如果在函式內部定義與某個全域性變數一樣名稱的區域性變數,就可能會導致意外的效果,可能不是你期望的。因此不建議這樣使用,這樣會使得程式很不健全

全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問

注意 不可變型別的全域性變數在內部函式呼叫後不會發生修改,但可變型別的變數在呼叫後會根據函式操作而變化

作用域不同 區域性變數只在該函式中有作用,在函式外呼叫無效

全域性變數在整個py中宣告,在任一函式中都可以呼叫,並且對於不可變型別來說,在函式中修改呼叫的全域性變數在函式外不會改變全域性變數的值,在函式執行完畢,修改的結果是無效的,全域性變數並不會受到影響。可變型別會隨函式呼叫而修改

lis =[1

,2,3

]s =

'a'def

run1()

:4)print

(lis)

s ='as'

print

(s)def

run2()

: run1()5

)print

(lis)

s ='ar'

print

(s)run2(

)print

(lis)

print

(s)

函式的傳參:

python中函式引數是引用傳遞(注意不是值傳遞)。對於不可變型別,因變數不能修改,所以運算不會影響到變數自身;而對於可變型別來說,函式體中的運算有可能會更改傳入的引數變數。

函式傳參的型別有5種:

positional_only、 引數值必須以位置引數的形式傳遞 如 function(a,b)

positional_or_keyword、 這種型別的引數在函式呼叫時既可以使用位置傳遞,也可以使用關鍵字傳遞,是最常見的一種引數型別 如function(a=1,b)

var_positional、即 *args 引數,屬於收集引數的一種,可以接收0個或多個位置引數。args是乙個tuple

注意:如果函式呼叫時傳遞了var_positional引數,則positional_or_keyword型別引數必須以位置引數的形式傳遞。如function(*args) 可以傳入function(1,2,3,『a』)等 傳入的資料以元組的形式存在args中

keyword_only、關鍵字引數,函式呼叫時必須以關鍵字的形式傳遞引數值 關鍵字引數間的順序可以打亂,但必須在位置引數後面 如function(b=1,a=3,d=2,c=0)

var_keyword

可以接收0個或多個關鍵字引數。kwargs是乙個dict,函式體可以直接從kwargs中提取傳入的引數。

python函式全域性變數與區域性變數

區域性變數 在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用 全域性變數 在乙個檔案頂部定義的變數可以供該檔案中任意函式呼叫 1優先讀取區域性變數,能讀取全域性變數,無法對全域性變數重新賦值 name 全域性變數 def change name name 區域性變數 prin...

python 函式 區域性變數與全域性變數

本節知識點 程序啟動獲得資源 定義變數,定義函式,占用資源 函式內部定義的變數是區域性變數 在當前程序作用範圍內的變數是全域性的變數 例子 租房市場,單間小房與客廳,小板櫈的使用許可權 區域性變數 全域性變數 例子當前的租房市場 單間800元 月,一般是三室一廳的某乙個室,臥室 通過來加深理解 na...

python 函式 區域性變數與全域性變數

函式優點 重用 保持一致性 可擴充套件性 import time def logger 時間年 月 日 分 time format y m d x time current time.strftime time format 開啟檔案a.txt,追加end action with open a.tx...