1. 程式人生 > >第六篇 函數對象、函數嵌套、名稱空間與作用域、裝飾器

第六篇 函數對象、函數嵌套、名稱空間與作用域、裝飾器

max 數據 多分支 數據傳遞 nbsp urn int clas 什麽

一、函數對象

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

#1 可以被引用
#2 可以當作參數傳遞
#3 返回值可以是函數
#4 可以當作容器類型的元素
  • 利用該特性,優雅的取代多分支的if

def foo():
    print(foo)

def bar():
    print(bar)

dic={
    foo:foo,
    bar:bar,
}
while True:
    choice=input(>>: ).strip()
    if choice in dic:
        dic[choice]()

二、函數嵌套

  • 函數的嵌套調用:在函數內又調用了其他函數

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

def max3(x,y,z):
    res1=max(x,y)
    res2=max2(res1,z)
    return res2

print(max3(11,199,2))
  • 函數的嵌套定義:在函數內又定義其他函數

def f1():
    print(f1)
    def f2():
        print(
f2) def f3(): print(f3) f3() f2() f1()

三、名稱空間與作用域

  • 什麽是名稱空間?

名稱空間:存放名字的地方,三種名稱空間
x=1
名稱空間正是存放名字x與1綁定關系的地方
  • 名稱空間的加載順序

python test.py
#1、python解釋器先啟動,因而首先加載的是:內置名稱空間
#2、執行test.py文件,然後以文件為基礎,加載全局名稱空間
#3、在執行文件的過程中如果調用函數,則臨時產生局部名稱空間

第六篇 函數對象、函數嵌套、名稱空間與作用域、裝飾器