---
def fun1():
num = 3
while True:
a = int(input("請輸入: "))
if a == 1:
fun2(num)
elif a ==2:
fun3(num)
else:
return
def fun2(num):
print("------", num)
del num #刪除的只是本地符號表中的num
'''
1.當一個函數被調用時,實參會被引入到該函數的本地符號表
2.函數中變量查找順序: (被調)當前函數本地符號表 --> 主調函數本地符號表 --> 全局符號表 --> 內置名稱表
3.因而這裏刪除的只是函數fun2本地符號表中的num,並沒有真正刪除num --- 函數fun1本地符號表中num
4.解決:
1.使用global或nonlocal關鍵字
'''
print("刪除執行完畢")
def fun3(num):
print(num, "------")
fun1()
---
再來看一個相同的錯誤(錯誤原因:紅框中內容)
num = 3
def test():
del num #UnboundLocalError: local variable 'num' referenced before assignment
test()