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

到此這篇關(guān)于python全局變量與局部變量的區(qū)別及使用的文章就介紹到這了,更多相關(guān)python全局變量與局部變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
selenium3+python3環(huán)境搭建教程圖解
這篇文章主要介紹了selenium3+python3環(huán)境搭建教程圖解,需要的朋友可以參考下2018-12-12
python使用線程封裝的一個(gè)簡(jiǎn)單定時(shí)器類實(shí)例
這篇文章主要介紹了python使用線程封裝的一個(gè)簡(jiǎn)單定時(shí)器類,實(shí)例分析了Python線程的使用及定時(shí)器類的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-05-05
使用Python的requests庫(kù)進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取的詳細(xì)教程
網(wǎng)絡(luò)爬蟲是一種自動(dòng)化程序,用于從互聯(lián)網(wǎng)上抓取數(shù)據(jù),無(wú)論是用于數(shù)據(jù)分析、市場(chǎng)研究、學(xué)術(shù)研究,還是搜索引擎的網(wǎng)頁(yè)索引,爬蟲技術(shù)都在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中發(fā)揮著重要作用,本文將通過 requests 庫(kù) 來(lái)講解如何進(jìn)行基本的網(wǎng)頁(yè)數(shù)據(jù)抓取,需要的朋友可以參考下2025-03-03
Python?OpenCV形態(tài)學(xué)運(yùn)算示例詳解
這篇文章主要為大家介紹了OpenCV中的幾個(gè)形態(tài)學(xué)運(yùn)算,例如:腐蝕&膨脹、開&閉運(yùn)算、梯度運(yùn)算、頂帽運(yùn)算黑帽運(yùn)算,感興趣的可以了解一下2022-04-04
Pytorch在NLP中的簡(jiǎn)單應(yīng)用詳解
今天小編就為大家分享一篇Pytorch在NLP中的簡(jiǎn)單應(yīng)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-01-01
如何利用AJAX獲取Django后端數(shù)據(jù)詳解
ajax一個(gè)前后臺(tái)配合的技術(shù),它可以讓javascript發(fā)送http請(qǐng)求,與后臺(tái)通信,獲取數(shù)據(jù)和信息。下面這篇文章主要介紹了如何利用AJAX獲取Django后端數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-06-06
Python實(shí)現(xiàn)多元線性回歸的梯度下降法
梯度下降法的機(jī)器學(xué)習(xí)的重要思想之一,梯度下降法的目標(biāo),是使得代價(jià)函數(shù)最小。本文主要和大家分享的是python實(shí)現(xiàn)多元線性回歸的梯度下降法,感興趣的可以了解一下2022-08-08
Python數(shù)據(jù)自動(dòng)化處理之?dāng)?shù)據(jù)清洗和報(bào)表生成詳解
這篇文章主要介紹了一個(gè)全自動(dòng)數(shù)據(jù)處理流水線的Python實(shí)現(xiàn)方案,幫助用戶解決日常數(shù)據(jù)處理痛點(diǎn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-03-03

