1. 程式人生 > 其它 >python:從入門到放棄 09 函式物件與閉包

python:從入門到放棄 09 函式物件與閉包

目錄

函式物件

函式物件指的是函式可以被當做’資料’來處理,具體可以分為四個方面的使用

函式名可以當做變數名賦值

def bar():
	return add

func=bar()
func(1,2)
3

函式名還可以當成函式的實參

def foo(x,y,func):
	return func(x,y)

foo(1,2,add)
3

函式名還可以當做函式的返回值

def bar():
	return add

func=bar()
func(1,2)
3

函式名可以作為容器型別的元素

'''容器型別:內部可以存檔多個元素的資料型別>>>:列表、元組、字典'''
def index():
	print('from index')
l1 = [11, 22, 33, 44, index]
print(l1)
l1[-1]()  # index()

閉包函式

閉包函式的特徵:
1.閉:定義在函式內部的函式
2.包:內部函式使用了外層函式名稱空間中的名字
    
def outer():
    x = 999
    def inner(): # 閉包函式
        print('from outer>>>inner',x)
    return inner
x = 666
res = outer()
res() # from outer>>>inner 999
'''閉包函式inner使用的是函式outer的區域性名稱空間的變數X,而非全域性名稱空間的變數X'''

閉包函式實際應用

目前為止,我們得到了兩種為函式體傳值的方式,一種是直接將值以引數的形式傳入,另外一種就是將值包給函式

#方式一:
def index(username):
    print(username)

index('Rain') # 以引數的形式傳入

#方式二:
def outer():
	username = 'Rain'
	def index():
		print(username) # 使用的是outer函式包給index函式的值
	return index
res = outer()
res() # Rain