Python變量教程之全局變量和局部變量
前言
全局變量是那些沒有在任何函數(shù)內(nèi)部定義并具有全局范圍的變量,而局部變量是那些在函數(shù)內(nèi)部定義的變量,其范圍僅限于該函數(shù)。換句話說,我們可以說局部變量只能在初始化它的函數(shù)內(nèi)部訪問,而全局變量在整個(gè)程序和每個(gè)函數(shù)內(nèi)部都可以訪問。局部變量是那些在函數(shù)內(nèi)部初始化并且僅屬于該特定函數(shù)的變量。它不能在函數(shù)之外的任何地方訪問。讓我們看看如何創(chuàng)建一個(gè)局部變量。
示例: 創(chuàng)建局部變量
def f(): # local variable s = "I love python" print(s) # 驅(qū)動(dòng)程序代碼 f()
輸出:
I love python
如果我們嘗試在函數(shù)外部使用這個(gè)局部變量,那么讓我們看看會(huì)發(fā)生什么。
例子:
def f():
# local variable
s = "I love python"
print("Inside Function:", s)
# 驅(qū)動(dòng)程序代碼
f()
print(s)輸出:
NameError: name 's' is not defined
全局變量
這些是在任何函數(shù)之外定義的并且可以在整個(gè)程序中訪問的那些,即在每個(gè)函數(shù)的內(nèi)部和外部。讓我們看看如何創(chuàng)建一個(gè)全局變量。
示例: 定義和訪問全局變量
# This function uses global variable s
def f():
print("Inside Function", s)
# Global scope
s = "I love python"
f()
print("Outside Function", s)輸出:
Inside Function I love python
Outside Function I love python
變量 s 被定義為全局變量,既可以在函數(shù)內(nèi)部使用,也可以在函數(shù)外部使用。
注意: 由于沒有局部變量,因此將使用全局變量的值,但請(qǐng)確保局部變量和全局變量應(yīng)具有相同的名稱。
現(xiàn)在,如果有一個(gè)同名的變量在函數(shù)內(nèi)部以及全局初始化怎么辦。現(xiàn)在問題來了,局部變量是否會(huì)對(duì)全局變量產(chǎn)生一些影響,反之亦然,如果我們?cè)诤瘮?shù) f() 中更改變量的值會(huì)發(fā)生什么?它也會(huì)影響全局變量嗎?我們?cè)谙旅娴拇a中對(duì)其進(jìn)行測(cè)試:
# 該函數(shù)有一個(gè)名稱與 s 相同的變量。 def f(): s = "Me too." print(s) # 全局范圍 s = "I love python" f() print(s)
輸出:
Me too.
I love python
如果在函數(shù)范圍內(nèi)也定義了具有相同名稱的變量,那么它將僅打印函數(shù)內(nèi)部給出的值,而不是全局值。
問題是,如果我們嘗試更改函數(shù)內(nèi)部的全局變量的值會(huì)怎樣。讓我們用下面的例子來看看。
例子:
# 該函數(shù)使用全局變量 s
def f():
s += 'GFG'
print("Inside Function", s)
# Global scope
s = "I love python"
f()輸出:
UnboundLocalError: local variable 's' referenced before assignment
為了使上述程序正常工作,我們需要使用“global”關(guān)鍵字。讓我們看看這個(gè)全局關(guān)鍵字是什么。
全局關(guān)鍵字
如果我們想要進(jìn)行賦值或更改全局變量,我們只需要在函數(shù)中使用global 關(guān)鍵字。 打印和訪問不需要全局。由于在 f() 中對(duì) s 的賦值,Python“假設(shè)”我們需要一個(gè)局部變量,因此第一條語句會(huì)拋出錯(cuò)誤消息。如果沒有將其聲明為全局變量,則在函數(shù)內(nèi)部更改或創(chuàng)建的任何變量都是局部變量。要告訴 Python,我們要使用全局變量,我們必須使用關(guān)鍵字 “global” ,如以下示例所示:
示例 1: 使用全局關(guān)鍵字
# 此函數(shù)修改全局變量's' def f(): global s s += ' HY' print(s) s = "Look for Haiyong Python Section" print(s) # 全局范圍 s = "Python is great!" f() print(s)
輸出:
Python is great! HY
Look for Haiyong Python Section
Look for Haiyong Python Section
現(xiàn)在沒有歧義了。
示例 2: 使用全局變量和局部變量
a = 1
# 使用全局,因?yàn)闆]有局部“a”
def f():
print('Inside f() : ', a)
# 變量“a”被重新定義為局部變量
def g():
a = 2
print('Inside g() : ', a)
# 使用 global 關(guān)鍵字修改全局 'a'
def h():
global a
a = 3
print('Inside h() : ', a)
# 全局范圍
print('global : ', a)
f()
print('global : ', a)
g()
print('global : ', a)
h()
print('global : ', a)輸出:
global : 1
Inside f() : 1
global : 1
Inside g() : 2
global : 1
Inside h() : 3
global : 3
到此這篇關(guān)于Python變量教程之全局變量和局部變量的文章就介紹到這了,更多相關(guān)Python全局與局部變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中functools.lru_cache的具體使用
本文主要介紹了python中functools.lru_cache的具體使用,通過functools.lru_cache,你可以輕松優(yōu)化具有重復(fù)計(jì)算的函數(shù),大大提高代碼的執(zhí)行效率2024-09-09
Python制作動(dòng)態(tài)字符圖的實(shí)例
今天小編就為大家分享一篇關(guān)于Python制作動(dòng)態(tài)字符圖的實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
基于 Django 的手機(jī)管理系統(tǒng)實(shí)現(xiàn)過程詳解
這篇文章主要介紹了基于 Django 的手機(jī)管理系統(tǒng)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)自動(dòng)化整理文件的示例代碼
這篇文章主要介紹了如何通過Python編程完成文件的自動(dòng)分類、文件和文件夾的快速查找、重復(fù)文件的清理、圖片格式的轉(zhuǎn)換等常見工作,需要的可以參考一下2022-09-09
python實(shí)現(xiàn)機(jī)器人行走效果
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)機(jī)器人行走效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
使用Python一鍵實(shí)現(xiàn)屏幕監(jiān)控軟件
這篇文章主要為大家詳細(xì)介紹了如何使用Python一鍵實(shí)現(xiàn)屏幕監(jiān)控軟件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08
Python?Bleach保障網(wǎng)絡(luò)安全防止網(wǎng)站受到XSS(跨站腳本)攻擊
Bleach?不僅可以清理?HTML?文檔,還能夠?qū)︽溄舆M(jìn)行處理,檢查是否是合法格式,并可以使用白名單來控制哪些?HTML?標(biāo)簽、屬性是安全的,因此非常適合用于清潔用戶輸入的數(shù)據(jù),確保網(wǎng)站安全2024-01-01

