python函数错误

来源:互联网 发布:仿百度搜索源码 编辑:程序博客网 时间:2024/06/05 02:03

---

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语句也被认为是绑定意图(尽管实际语义是解除该名称的绑定)

0 0
原创粉丝点击