python全局變量與局部變量的區(qū)別及使用
在python中定義和使用函數(shù)方法的時候,會遇到局部變量和全局變量,這里主要是說明什么是局部變量,什么是全局變量,以及兩者之間的區(qū)別。
首先兩者最大的區(qū)別就是作用域不同,也可以說是命名空間不同,簡單來說就是全局變量和局部變量他兩的作用范圍不一樣。
全局變量和局部變量的定義:全局變量是在函數(shù)外定義的變量,局部變量是在函數(shù)方法內(nèi)定義的變量
例如
a=1
def func():
b=2這里的a就是全局變量,b就是局部變量。
知道這兩者的定義之后,就要去理解他兩的作用域不同。
可以將這里的作用域不同主要是分為:
1、函數(shù)內(nèi)可以直接訪問全局變量的
例如
a=1
def func():
b=2
print(a)
func()
print(a)
添加圖片注釋,不超過 140 字(可選)
這里的輸出是兩個a的值1,這說明函數(shù)內(nèi)是可以直接訪問全局變量的
2、函數(shù)內(nèi)不可以直接修改全局變量
a=1
def func():
b=2
a=a+1
print(a)
添加圖片注釋,不超過 140 字(可選)
這里就會出現(xiàn)報錯,這個報錯就是表明函數(shù)方法內(nèi)可以讀取但是不可以去修改全局變量。
UnboundLocalError: local variable 'a' referenced before assignment
3、函數(shù)外部不可以直接訪問局部變量
a=1
def func():
b=2
print(a)
func()
print(a)
Print(b)報錯NameError: name 'b' is not defined
這就是作用域做了一個限制。但對于以上兩個問題,我們可以通過global來解決,分別把a和b使用global來聲明一下即可,global a,b,就不會出現(xiàn)報錯的情況了。
a=1
def func():
global a,b
b=2
a+=1
print(a)
print(b)這里輸出的a的值是2,這也就表明了修改全局變量
4、同名的局部變量會覆蓋全局變量
a=1
def func():
a=10
print(a)
func()
print(a)這里的輸出是10,1,這個時候就是局部變量,它雖然名字和全局變量是一樣的,但是它有一個查找優(yōu)先級,先在自己的作用域中去找,如果找到了就直接打印出來了,如果找不到的話才會去全局變量中去找,所以說只要有同名的局部變量,就會覆蓋全局變量。

到此這篇關(guān)于python全局變量與局部變量的區(qū)別及使用的文章就介紹到這了,更多相關(guān)python全局變量與局部變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
selenium3+python3環(huán)境搭建教程圖解
這篇文章主要介紹了selenium3+python3環(huán)境搭建教程圖解,需要的朋友可以參考下2018-12-12
使用Python的requests庫進行網(wǎng)頁數(shù)據(jù)抓取的詳細教程
網(wǎng)絡(luò)爬蟲是一種自動化程序,用于從互聯(lián)網(wǎng)上抓取數(shù)據(jù),無論是用于數(shù)據(jù)分析、市場研究、學術(shù)研究,還是搜索引擎的網(wǎng)頁索引,爬蟲技術(shù)都在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中發(fā)揮著重要作用,本文將通過 requests 庫 來講解如何進行基本的網(wǎng)頁數(shù)據(jù)抓取,需要的朋友可以參考下2025-03-03
如何利用AJAX獲取Django后端數(shù)據(jù)詳解
ajax一個前后臺配合的技術(shù),它可以讓javascript發(fā)送http請求,與后臺通信,獲取數(shù)據(jù)和信息。下面這篇文章主要介紹了如何利用AJAX獲取Django后端數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-06-06
Python數(shù)據(jù)自動化處理之數(shù)據(jù)清洗和報表生成詳解
這篇文章主要介紹了一個全自動數(shù)據(jù)處理流水線的Python實現(xiàn)方案,幫助用戶解決日常數(shù)據(jù)處理痛點,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2026-03-03

