函数对象,函数嵌套,名称空间与作用域(未补充完)

一,函数对象

函数是第一类对象,即函数可以当做数据传递

  1.可以被引用

  2.可以当做参数传递

len(x)
def foo(m):
    # print(m)
    m()
foo(func)

  3.返回值可以是函数

def foo(x): #x=func
    return x #return func
res=foo(func)
print(res)
res()

  4.可以当作容器类型的元素

l=[x,]
l=[func,]
# print(l)
l[0]()

利用该特性,优雅的取代多分支的if语句:

def login():
    print("登陆")
def register():
    print("注册")
def shopping():
    print("购物")

res =  input("请选择功能名称:")
# if res == "login":
#     login()
# elif res == "register":
#     register()
# elif res == "shopping":
#     shopping()
# else:
#     print("输入有误")


funcdic = {"login":login,"register":register,"shopping":shopping}

if res in funcdic:
    funcdic[res]()
else:
    print("输入有误!")
原文地址:https://www.cnblogs.com/kp1995/p/10035152.html