1. 程式人生 > >函式物件,函式巢狀,名稱空間與作用域,裝飾器

函式物件,函式巢狀,名稱空間與作用域,裝飾器

一,函式物件

函式是第一類物件,即函式可以當做資料傳遞

  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("輸入有誤!")