函式物件和函式巢狀 阿新 • • 發佈:2018-12-03 # 1. 函式物件## 函式是第一類物件:函式的記憶體地址可以像變數值一樣去使用## 最簡單的來說吧:學變數的時候我們說過,定義變數時,# 申請一塊記憶體空間存放值,然後將這個記憶體空間的地址與變數名建立聯絡,# 我們通過變數名就可以訪問到值並做一些操作。函式也是一樣的,我們定義函式時,# 申請了一塊空間存放函式的程式碼塊,然後將這個記憶體空間的地址與函式名建立聯絡。# 我們同樣可以通過函式名去做一些和變數一樣的操作。## 首先我們要宣告:函式名()這樣會觸發函式的程式碼塊的執行,就不是我們上面所說的通過記憶體地址去做操作了。## 函式名就像變數一樣,所以我們可以變相的說這樣一句話(函式即變數。) # 這句話不是python給我們規定的,而是我們為了更好的理解函式名的操作而自己創造的!!!# 1,函式可以被引用# a = 1# b = a# 這樣我們就將變數a的值引用給了b# 函式名同樣可以這樣操作# def func():# pass# f=func# f()# foo()就相當於是呼叫func函式# 這樣我們就把func函式的記憶體地址與foo建立了聯絡。通過foo我們一樣可以得到與func一樣的執行效果# 2,函式可以當作引數傳給另一個函式# def func()# pass# foo(func)# 這樣我們就實現了將func函式當做引數傳入foo函式# 3,函式可以函式的返回值# def func(name): # return name# a='hello egon'# func(a)# 這裡返回的就是函式名稱本身# func(foo)#把函式名當作引數傳入,函式名就會被當作返回值返回。# 4,函式可以當作容器型別的元素# a=['a','b']# def func():# pass# def foo():# pass# a=[func,foo]# 這裡就是函式當作容器型別的元素,這樣讓我們可以對函式有更多的呼叫# 應用# def register():# print('註冊》》》')# def login():# print('登陸》》》')# def pay():# print('支付》》》') # def transfer():# print('購物車》》》')## func_dic={# '1':register,# '2':login,# '3':pay,# '4':transfer# }# #func_dic['1']() # while True:# print("""## 0 退出# 1 註冊# 2 登入# 3 支付# 4 轉賬# """)# choice = input('請輸入你的操作: ').strip()# if choice == '0': break## if choice not in func_dic:# print('輸錯的指令不存在')# continue# func_dic[choice]() # 函式的巢狀分為兩種:# 1. 定義過程中的巢狀:在函式定義的程式碼塊中又定義了一個函式# def func():# pass# def foo():# pass# 2. 呼叫過程中的巢狀:在函式呼叫的程式碼塊中呼叫了另一個函式# def func()# pass# def foo()# func()# pass