標籤:分類 函數對象 函數嵌套 while 認證 包含 key 檔案的 pre
1.命名關鍵字參數
格式:在*後面的參數都是命名關鍵字參數
特點:
1.必須被傳值
2.約束函數的調用者必須按照key=value的形式傳值
3.約束函數的調用者必須用我們指定的key名
1 def auth(*args,**kwargs): 2 """ 3 使用方式auth(name="egon",pwd="123") 4 :param args: 5 :param kwargs: 6 :return: 7 """ 8 # print(args,kwargs) 9 if len(args) !=0:10 print(‘必須用關鍵字的形式傳參‘)11 return12 if ‘name‘ not in kwargs:13 print(‘必須用指定的key名name‘)14 return15 if ‘pwd‘ not in kwargs:16 print(‘必須用指定的key名pwd‘)17 return18 19 name=kwargs[‘name‘]20 pwd=kwargs[‘pwd‘]21 print(name,pwd)
2.函數嵌套
1.函數的嵌套調用:在函數內又調用了其他函數
def max(x,y): if x>y: reryrn x else: return ydef max3(x,y,z): res1 = max2(x,y) res2 = max2(rea1,z) return res2print(max3(11,199,2))
2,函數的嵌套定義:在函數內又定義了其他函數
def func1(): print(‘from func1‘) def func2(): #func2=記憶體位址 print(‘from func2‘)func1()
def f1(): print(‘f1‘) def f2(): print(‘f2‘) def f3(): print(‘f3‘) f3() f2()f1()‘‘‘f1f2f3‘‘‘
3.名稱空間和範圍
1.名稱空間:存放名字和值綁定關係的地方
1.2.名稱空間分類:
1.2.1內建名稱空間:存放python解譯器內建的名字,在解譯器啟動時就生效,解譯器關閉則失效
1.2.2全域名稱空間:檔案層級的名字,在執行檔案的時候生效,在檔案結束或者在檔案刪除的時候失效
1.2.3局部名稱空間:存放函數內定義的名字(函數的參數以及函數內名字都存放在局部變數空間)---在函數調用時臨時生效,函數結束則失效
載入順序:內建名稱空間-----全域名稱空間---局部名稱空間
尋找名字:局部名稱空間-----全域名稱空間-----內建名稱空間
2:範圍
1.全域變數域:包含的是內建名稱空間與全域名稱空間的名字
特點:
在任何位置都能訪問到
該範圍內的名字會伴隨程式整個生命週期
2.局部範圍:包含的是局部名稱空間的名字
特點:
只能在函數內使用
調用函數是生效,調用結束失效
4,函數對象
1,函數可以被引用
def bar(): print(‘from bar‘)f =barf()
2,可以當作參數傳入
def bar(): print(’from bar‘)def wrapper(func): func()wrapper(bar)
3,可以當作函數的傳回值
def bar(): print(’from bar‘)def foo(func): return funcf = foo(bar)f()
4,可以當作容器類型的元素
def get(): print(‘from get‘)def put(): print(‘from put‘)l=[get,put]print(l)l[0]()
def auth(): print(‘登陸。。。。。‘)def reigster(): print(‘註冊。。。。。‘)def search(): print(‘查看。。。。‘)def transfer(): print(‘轉賬。。。。‘)def pay(): print(‘支付。。。。‘)dic={ ‘1‘:auth, ‘2‘:reigster, ‘3‘:search, ‘4‘:transfer, ‘5‘:pay}def interactive(): while True: print(""" 1 認證 2 註冊 3 查看 4 轉賬 5 支付 """) choice=input(‘>>: ‘).strip() if choice in dic: dic[choice]() else: print(‘非法操作‘)interactive()
5,閉包函數
定義在函數內部的函數,並且該函數包含對外部函數範圍中名字的引用,該函數就成為閉包函數
def outter(): name=‘egon‘ def inner(): print(‘my name is %s‘ %name) return inner
inner()被稱為閉包函數。
inner()定義在函數outter外部,outter函數的範圍內部變數name,在inner內被引用
python之路--day10-閉包函數