首頁 > 軟體

Python變數教學之全域性變數和區域性變數

2022-08-17 14:00:02

前言

全域性變數是那些沒有在任何函數內部定義並具有全域性範圍的變數,而區域性變數是那些在函數內部定義的變數,其範圍僅限於該函數。換句話說,我們可以說區域性變數只能在初始化它的函數內部存取,而全域性變數在整個程式和每個函數內部都可以存取。區域性變數是那些在函數內部初始化並且僅屬於該特定函數的變數。它不能在函數之外的任何地方存取。讓我們看看如何建立一個區域性變數。

範例: 建立區域性變數

def f():

	# local variable
	s = "I love python"
	print(s)


# 驅動程式程式碼
f()

輸出:

I love python

如果我們嘗試在函數外部使用這個區域性變數,那麼讓我們看看會發生什麼。

例子:

def f():
	
	# local variable
	s = "I love python"
	print("Inside Function:", s)

# 驅動程式程式碼
f()
print(s)

輸出:

NameError: name 's' is not defined

全域性變數

這些是在任何函數之外定義的並且可以在整個程式中存取的那些,即在每個函數的內部和外部。讓我們看看如何建立一個全域性變數。

範例: 定義和存取全域性變數

# 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 被定義為全域性變數,既可以在函數內部使用,也可以在函數外部使用。

注意: 由於沒有區域性變數,因此將使用全域性變數的值,但請確保區域性變數和全域性變數應具有相同的名稱。

現在,如果有一個同名的變數在函數內部以及全域性初始化怎麼辦。現在問題來了,區域性變數是否會對全域性變數產生一些影響,反之亦然,如果我們在函數 f() 中更改變數的值會發生什麼?它也會影響全域性變數嗎?我們在下面的程式碼中對其進行測試:

# 該函數有一個名稱與 s 相同的變數。
def f():
	s = "Me too."
	print(s)


# 全域性範圍
s = "I love python"
f()
print(s)

輸出:

Me too.
I love python

如果在函數範圍內也定義了具有相同名稱的變數,那麼它將僅列印函數內部給出的值,而不是全域性值。 

問題是,如果我們嘗試更改函數內部的全域性變數的值會怎樣。讓我們用下面的例子來看看。

例子:

# 該函數使用全域性變數 s
def f():
	s += 'GFG'
	print("Inside Function", s)


# Global scope
s = "I love python"
f()

輸出:

UnboundLocalError: local variable 's' referenced before assignment

為了使上述程式正常工作,我們需要使用“global”關鍵字。讓我們看看這個全域性關鍵字是什麼。

全域性關鍵字

如果我們想要進行賦值或更改全域性變數,我們只需要在函數中使用global 關鍵字。 列印和存取不需要全域性。由於在 f() 中對 s 的賦值,Python“假設”我們需要一個區域性變數,因此第一條語句會丟擲錯誤訊息。如果沒有將其宣告為全域性變數,則在函數內部更改或建立的任何變數都是區域性變數。要告訴 Python,我們要使用全域性變數,我們必須使用關鍵字 “global” ,如以下範例所示: 

範例 1: 使用全域性關鍵字

# 此函數修改全域性變數'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

現在沒有歧義了。 

範例 2: 使用全域性變數和區域性變數

a = 1

# 使用全域性,因為沒有區域性「a」
def f():
	print('Inside f() : ', a)

# 變數「a」被重新定義為區域性變數
def g():
	a = 2
	print('Inside g() : ', a)

# 使用 global 關鍵字修改全域性 '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

到此這篇關於Python變數教學之全域性變數和區域性變數的文章就介紹到這了,更多相關Python全域性與區域性變數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com