Python變量的作用域使用
前言
變量的作用域是指程序代碼能夠訪問該變量的區(qū)域,如果超出該區(qū)域,在訪問時就會出現錯誤。
在程序中,一般會根據變量的“有效范圍”,將變量分為“局部變量”和“全局變量”。
局部變量
局部變量是指在函數內部定義并使用的變量,它只有在函數內部有效。即函數內部的名字只在函數運用時才會創(chuàng)建,在函數運行前或者運行完畢之后,所有的名字就都不存在了。所以,如果在函數外部使用函數內部定義的變量,就會出現拋出NameError異常。
例如,定義一個名稱為f_demo的函數,在該函數內部定義一個變量message(稱為局部變量),并為其賦值,然后輸出該變量,最后在函數體外部再次輸出message變量,代碼如下:
def f_demo(): message = "唯有被追趕的時候,你才能真正地奔跑" print("局部變量message =", message) # 輸出局部變量值 f_demo() # 調用函數 print("局部變量message =", message) # 在函數體外調用局部變量
運行上面代碼將拋出以下異常(要訪問的變量不存在):
全局變量
與局部變量對應,全局變量是能夠作用與函數內外的變量。
全局變量主要有以下兩種情況:
(1)如果一個變量,在函數外定義,然后再定義一個函數,在該函數內也可以訪問到。在函數體以外定義的變量是全局變量。
message = "唯有被追趕的時候,你才能真正地奔跑" def f_demo(): print("局部變量message =", message) # 輸出全局變量值 f_demo() # 調用函數 print("局部變量message =", message) # 在函數體外調用全局變量
運行以上的代碼,將顯示以下內容:
(2)在函數體內定義,并且使用global關鍵字修飾后,該變量也可以成為全局變量。在函數體外也可以訪問到該變量,并且在函數體內還可以對其值進行修改。
定義兩個同名的全局變量和局部變量,并輸出她們的值,代碼如下:
message = "唯有被追趕的時候,你才能真正地奔跑" # 全局變量 def f_demo(): message = "命運給予我們的不是失望的酒,而是機會之杯" # 局部變量 print("局部變量message =", message) # 輸出局部變量值 f_demo() # 調用函數 print("局部變量message =", message) # 在函數體外調用全局變量
運行以上的代碼,將顯示以下內容:
從上面結果來看,在函數內部定義的變量即使與全局變量重名,也不影響全局變量的值。
那么想要在函數體內改變全局變量的值,需要在定義局部變量時,使用global關鍵字修飾,例如,將上面的代碼修改為以下內容:
message = "唯有被追趕的時候,你才能真正地奔跑" # 全局變量 print("全局變量message =", message) # 在函數體外調用全局變量 def f_demo(): global message # 將message聲明為全局變量 message = "命運給予我們的不是失望的酒,而是機會之杯" # 全局變量值 print("全局變量message =", message) # 在函數體內調用全局變量 f_demo() # 調用函數 print("全局變量message =", message) # 在函數體外調用全局變量
運行以上的代碼,將顯示以下內容:
從上面的結果可以看出,在函數體內部修改了全局變量的值。
注意:
盡管Python允許全局變量和局部變量重名,但是在實際開發(fā)時,不建議這么做,因為容易讓代碼混亂,很難分清那些是全局變量,那些是局部變量。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
在Python中操作文件之truncate()方法的使用教程
這篇文章主要介紹了在Python中操作文件之truncate()方法的使用教程,是Python入門學習中的基礎知識,需要的朋友可以參考下2015-05-05