前言:
在看這篇文章之前,建議先去Day14了解一下LEGB規則的部分。
本文:
在Python的世界中,外頭的變數和函數裡的變數是截然不同的,你可以取相同的名字,但作用的部分,並不一樣。在函數裡面作用的部分都會以區域變數為主,不會動到外面的變數,除非你使用global。
x = 25def test(x):
print("x is ",x)
x = 689
print("Changed local x to " , x)
test(x)
print("事實上x仍然是:",x)
print("x is ",x)
x = 689
print("Changed local x to " , x)
test(x)
print("事實上x仍然是:",x)
輸出結果:
x is 25
x - > 689
事實上x仍然是: 25
欸?我不是已經把x改成689了嗎?怎麼外面還是25
函數中所改動的x,指的僅僅是test()裡面而已,不會動到外面的x。
那這樣咋辦阿老鐵?
如果要連外面的x一起改動
x = 25
def test():
global x
print("從外面取出來的x值為",x)
x = 689
print("在呼叫test()之前的x值",x)
test()
print("呼叫test()後,x真的被改成",x)
def test():
global x
print("從外面取出來的x值為",x)
x = 689
print("在呼叫test()之前的x值",x)
test()
print("呼叫test()後,x真的被改成",x)
輸出結果:
在呼叫test()之前的x值 25
從外面取出來的x值為 25
呼叫test()後,x真的被改成 689
題外話:
有做筆記,真的能更能了解一個語言的使用,以前都只是大略看過翻翻,不當一回事,真正要熟悉才知道,哇那麼多小細節要注意的。
今天啞鈴臥推終於突破32kg了,雖然只有一下,但終於是把學校健身房能用的啞鈴都推過,可喜可賀可喜可賀。(戒糖Day11)