最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Day15-函式間的資料聯繫

XAMPP下载 admin 598浏览 0评论
 區域變數和全域變數
變數的有效範圍分為區域變數和全域變數:

區域變數:定義在一個涵式中的變數,其有效範圍是該涵式內。
全域變數:定義在涵式外的變數,其有效範圍是整個Python檔案。
區域變數
在一個涵式中所使用的變數稱為區域變數,它的作用範圍只有在該涵式內部,所以不同的涵式中可以有相同名稱的變數,它們在各自的涵式中互不干擾。當涵式執行完畢,區域變數所占有的記憶體空間也會被釋放。以下看看區域變數的範例

def f1():
x = 5         #區域變數
y = 6         #f1()中的y跟f2()的y不相干
print(x+y)
def f2():
y = 1
print(x+y)    #錯誤! 不能取到x值(區域)

f1()
f2()
因為x為f1()的區域變數,所以f2()會用不到,它們兩變數皆是互不相干的。

全域變數
在所有涵式外定義的變數為全域變數。他可以用在主程式中,也能在各涵式中作使用。那麼我們把剛剛的x拉到外面去,如此x會成為全域變數,程式也能夠順利執行。如下:

x = 5         #全域變數
def f1():
y = 6
print(x+y)
def f2():
y = 1
print(x+y)

f1()
f2()
雖然目前看來全域變數很方便,但程式中使用過多全域變數會使涵式間的耦合變得緊密,喪失涵式的獨立性。

全域區域的關係
如果涵式中定義的區域變數與全域變數名稱相同,則區域變數會隱藏全域變數。如下:
x = ‘outside’       #全域變數
y = ‘global’
def f():
x = ‘inside’    #覆蓋掉
print(x)
print(y)

f()
print(x)

>>>
inside
global
outside
>>>
用global宣告全域變數
由於在函式中對全域變數進行設定值運算,或改變全域變數值,皆會發生錯誤,如:

a = ‘abc’
def d():
b = a
a = 10         #改變全域變數,錯誤

a = a+’inside’ #右方a不存在,錯誤
print(a)

d()
print(a)
所以為了要告知函式某變數為全域變數,可以使用global敘述:

a = ‘abc’
def d():
global a        #宣告a為全域變數
a = a+’inside’
print(a)

d()

>>>
abc inside
>>>
還有最後想提的是,如果不使用全域變數的話要如何將函式中的區域變數資料傳遞到外面?
以下有兩種方法:

透過參量從呼叫者輸入值
透過傳回值向呼叫者輸出值
#f1()變數x作為參數傳給f2()
def f1():
x = 5
y = 6
f2(x)
print(x+y)
def f2(z):
y = 1
print(z+y)

f1()
#f1()變數x作為參數傳給f2()
def f1():
x = 5
y = 6
print(x+y)
return x
def f2():
y = 1
print(f1()+y)

f2()

转载请注明:XAMPP中文组官网 » Day15-函式間的資料聯繫

您必须 登录 才能发表评论!