python进阶之 ——函数对象、函数嵌套
函数对象
在面向对象编程中,一切皆对象。函数是第一类对象,也就是说,其内存地址可以像一个变量值一样去使用。而变量值可以:
I.被引用 II.当作参数传给另一个函数 III.当作函数返回值 IV.当作容器类型元素
so,函数可以(不加()时)作为一个对象,被当作值使用,而不是直接调用执行函数内代码。
这就是函数对象的概念,运用这个概念,可以简单的写一个函数字典:
def register(): #自定义一个函数 print("register......") def auth(): print("login....") def check(): print("checking....") func_dict = {"1": register, "2": auth, "3": check} # 定义一个函数字典 while True: func_list = ["注册", "登录", "查看"] for i, item in enumerate(func_list, start=1):65 #enumerate是将(可遍历的数据对象)列表组合为一个索引序列,同时列出数据和数据下标,通常用在for循环中 print(i, item) cmd = input(" inpput cmdmand>>") if func_dict.get(cmd): func_dict.get(cmd)() else: print("输入有误")
函数嵌套:
既然函数是对象,函数的操作都可以在其他函数内操作,比如定义和调用:
函数的嵌套调用:在一个函数内部又调用其他函数
函数的嵌套定义: 在函数内又定义了其他函数
def open_door(): print("你瞅啥") def putin(): print("瞅你咋地") def close_door(): print("再瞅抽你") close_door() putin() open_door()
定义在函数内的函数,只能在函数内使用,外界不能调用