Python變量教程之全局變量和局部變量

前言

全局變量是那些沒有在任何函數內部定義並具有全局范圍的變量,而局部變量是那些在函數內部定義的變量,其范圍僅限於該函數。換句話說,我們可以說局部變量隻能在初始化它的函數內部訪問,而全局變量在整個程序和每個函數內部都可以訪問。局部變量是那些在函數內部初始化並且僅屬於該特定函數的變量。它不能在函數之外的任何地方訪問。讓我們看看如何創建一個局部變量。

示例: 創建局部變量

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全局與局部變量內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: