python函數錯誤


---

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()


del語句也被認爲是綁定意圖(儘管實際語義是解除該名稱的綁定)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章