Python的函式物件

2022-06-26 13:03:12 字數 4017 閱讀 7166

一、函式物件

函式物件:指的是函式可以被當作「資料」來處理

函式可以做什麼?

(1)函式可以被引用。

(2)函式可以作為容器型別的元素。

(3)函式可以作為引數傳入另外乙個函式。

(4)函式的返回值可以是乙個函式。

精髓:可以把函式當成變數去用

func = 記憶體位址

def

func():

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:

print

(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 函式可以作為引數傳入另外...