一、函式物件函式物件:指的是函式可以被當作「資料」來處理
函式可以做什麼?
(1)函式可以被引用。
(2)函式可以作為容器型別的元素。
(3)函式可以作為引數傳入另外乙個函式。
(4)函式的返回值可以是乙個函式。
精髓:可以把函式當成變數去用
func = 記憶體位址
deffunc():
print('
func func')
#注意func和func()的區別?
#func是變數名,相當於記憶體位址的別名。
#func()是呼叫函式,得到的是乙個結果。
#1、可以賦值:函式可以被引用
func
#f = func # 就是將func的記憶體位址賦給乙個變數
#print(f,func) #
#f1 = func() # 就是將func()的結果賦給乙個變數
#print(f1) # none
#print(f()) # func func none
#print(func()) # # func func none
#2、可以當作函式的引數傳入
def foo(x): #
x = func的記憶體位址
#print(x) #
#下面的效果相同
x() func()
#a = 111
#foo(111)
#foo(a)
#func的記憶體位址當作引數傳入
foo(func) #
foo(func的記憶體位址)
#3、可以把作函式當作另乙個函式的返回值
#def foo(x): # x = func的記憶體位址
#return x # return func的記憶體位址
#res = foo(func) # foo(func的記憶體位址)
#print(res) # ##
res() # 加入()後得到結果:func func
#4、可以當作容器型別的乙個元素。
#例項1:列表
#l = [func,]
#print(l) #
#取得列表中元素如下
#l[0]
#呼叫列表
#l[0]() # func func
#例項2:字典
#dic=
#print(dic) # #呼叫
#dic['k1']() # func func
#函式物件應用,例項:atm機功能
#def login():
#print('登入功能')##
def transfer():
#print('轉賬功能')##
def check_banlance():
#print('查詢餘額')##
# 增加乙個取款的功能
#def withdraw():
#print('體現')##
while true:
#print("""
#0 推出
#1 登入
#2 轉賬
#3 查詢餘額
#4 體現
#""")
#choice= input('請輸入命令編號:').strip()
#if not choice.isdigit(): # 判斷是否為數字,不是數字則進入下一次0
#print('必須輸入編號:')
#continue
#if choice == '0':
#break
#elif choice == '1':
#login()
#elif choice == '2':
#transfer()
#elif choice == '3':
#check_banlance()
#elif choice == '4':
#withdraw()
#else:
#print('輸入的指令不存在')
#思考;如果以後要求加入10個功能,
#def login():
#print('登入功能')
#def transfer():
#print('轉賬功能')
#def check_banlance():
#print('查詢餘額')
## 增加乙個取款的功能
#def withdraw():
#print('體現')##
# 增加乙個註冊功能
#def register():
#print("註冊")
## 使用字典形式優化上面if...elif...的無線增多
#func_dic=
## 要想訪問到相應的功能怎麼辦?使用如下辦法:
## func_dic['1']()
## 如何判斷命令是否存在##
while true:
#print("""
#0 推出
#1 登入
#2 轉賬
#3 查詢餘額
#4 體現
#5 註冊
#""")
#choice= input('請輸入命令編號:').strip()
#if not choice.isdigit(): # 判斷是否為數字,不是數字則進入下一次0
#print('必須輸入編號:')
#continue
#if choice == '0':
#break
## 我們判斷輸入的是否為字典中的編號,取代if...elif...的更多
#if choice in func_dic:
#func_dic[choice]()
#else:
#print('輸入的指令不存在')
#再次優化上面的**
deflogin():
print('
登入功能')
deftransfer():
print('
轉賬功能')
defcheck_banlance():
print('
查詢餘額')
#增加乙個取款的功能
defwithdraw():
print('體現'
)#增加乙個註冊功能
defregister():
print("註冊"
)#使用字典形式優化上面if...elif...的無線增多
func_dic=
#要想訪問到相應的功能怎麼辦?使用如下辦法:
#func_dic['1']()
#如何判斷命令是否存在
while
true:
for k in
func_dic:
(k,func_dic[k][0])
choice= input('
請輸入命令編號:
').strip()
ifnot choice.isdigit(): #
判斷是否為數字,不是數字則進入下一次0
print('
必須輸入編號:')
continue
if choice == '0'
:
break
#我們判斷輸入的是否為字典中的編號,取代if...elif...的更多
if choice in
func_dic:
func_dic[choice][1]() #
獲取字典中對應的值
else
:
print('
輸入的指令不存在
')
python 函式物件
函式是第一類物件 指的是函式可以當做資料傳遞 1 可以被引用 x 1,y 1 def func x,y print x,y f func f 1,2 輸出結果 1 2 2 可以當做函式的引數傳入 def func print hello world def bar x print x bar fun...
python之函式的物件
引用函式 def add x,y return x y func add print func 1,2 3 函式作為容器型別的元素 dic print dic print dic add 1,2 3 函式作為另乙個函式的引數 def foo x,y,func return func x,y prin...
python 閉包函式 python函式物件和閉包
一 函式物件 函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,我們如下 1.1 函式可以被引用 def add x,y return x y func add func 1,2 1.2 函式可以作為容器型別的元素 dic dicdic add 1.3 函式可以作為引數傳入另外...