py11_函數對象、嵌套、名稱空間與作用域
阿新 • • 發佈:2018-06-11
aps spl 不可 數據 true DC 退出 除了 函數定義
一、函數對象
函數是一類對象的含義是函數可以被當作各種數據來進行處理
1.引用
2.當作參數傳給另一個函數
3.當作函數的返回值
4.當作容器類型的元素(如:list)
1 def pay(): 2 print("支付") 3 def withdraw(): 4 print("取款") 5 def transfer(): 6 print("轉賬") 7 func_dic={ 8 "1":pay, 9 "2":withdraw, 10 "3":transfer, 11 } 12 while True: 13 msg="""當作容器的例子14 1 支付 15 2 取款 16 3 轉賬 17 q 退出 18 """ 19 print(msg) 20 choice=input(">>>:").strip() 21 if choice=="q":break 22 if choice not in func_dic: 23 print("指令不存在") 24 continue 25 func_dic[choice]() # 選擇指令開始執行函數
二、函數的嵌套
1. 函數嵌套的定義
def func1(): def func2(): print("func2") func2() func1()
2.函數嵌套的調用
def max2(x,y): if x > y : return x else: return y def max4(a,b,c,d): res1=max2(a,b) res2=max2(res1,c) res3=max2(res2,d) return res3 print(max4(99,88,77,66))
三、名稱空間域作用域
1. 什麽是名稱空間?
名稱空間是存放名字(變量名)與值(變量值)綁定關系的地方。
2. 名稱空間分成三大類
2.1 內置名稱空間
作用:用來存放python解釋器自帶的名字
生命周期:在解釋器啟動時生效,在解釋器關閉時失效
2.2 全局名稱空間
作用:除了內置與局部的名字外,剩下的都是全局名字
生命周期:在文件執行時生效,在文件執行完畢時失效
2.3 局部名稱空間
作用:用於存放函數調用期間函數體產生的名字
生命周期:在文件執行過程中,只有調用了某個函數才會臨時生效,在函數執行完畢後失效
???註意:
三種名稱空間的加載順序與名字查找順序時相反的
加載順序:內置→全局→局部
查找名字順序:局部←全局←內置
3.作用域(重點????)
作用域即產生作用的範圍
3.1分類
全局作用域(內置名稱空間與全局名稱空間)
全局有效,全局存活
局部作用域(局部名稱空間)
局部有效,臨時存活
作用域關系:在函數定義階段就已經固定完成了,只要調用函數就需到定義階段去找作用域關系
3.2 global
3.2.1 在局部想要修改全局的可變類型,不需要借助任何聲明,可以直接修改。
3.2.2 在局部想要修改全局的不可變類型,需要借助global聲明,聲明成全局變量就可以直接修改了。
py11_函數對象、嵌套、名稱空間與作用域