1. 程式人生 > >二 函數對象、函數嵌套

二 函數對象、函數嵌套

rom 函數對象 容器類 數據傳遞 span 函數嵌套 clas 特性 數據

一 函數對象

  一、函數是第一類對象,即函數可以當作數據傳遞

  二、利用該特性,優雅的取代多分支的if

二 函數嵌套

  一、函數的嵌套調用

  二、函數的嵌套定義

一 函數對象

一、函數是第一類對象,即函數可以當作數據傳遞

#1 可以被引用
#2 可以當作參數傳遞
#3 返回值可以是函數
#3 可以當作容器類型的元素

二、利用該特性,優雅的取代多分支的if

 1 def foo():
 2     print(foo)
 3 
 4 def bar():
 5     print(bar)
 6 
 7 dic={
8 foo:foo, 9 bar:bar, 10 } 11 while True: 12 choice=input(>>: ).strip() 13 if choice in dic: 14 dic[choice]()

二 函數嵌套

一、函數的嵌套調用

def max(x,y):
    return x if x > y else y

def max4(a,b,c,d):
    res1=max(a,b)
    res2=max(res1,c)
    res3=max(res2,d)
    
return res3 print(max4(1,2,3,4))

二、函數的嵌套定義

1 def f1():
2     def f2():
3         def f3():
4             print(from f3)
5         f3()
6     f2()
7 
8 f1()
9 f3() #報錯,為何?請看下一小節

二 函數對象、函數嵌套