Python 函式物件與閉包

2022-07-24 09:09:06 字數 1585 閱讀 3123

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

def index():

print('from index')

a = index

a()

def foo(x,y,func):

print(x,y)

func()

def bar():

print('from bar')

foo(1,2,bar)

#>>> 1 2

#>>> from bar

def index():

print('from index')

def func(a):

return a

a = func(index)

a()#>>> from index

函式名可以被當做容器型別的元素

def func():

print('from func')

l1 = [1,'2',func,func()]

f = l1[2]

#>>> from func

基於函式物件的概念,可以將函式返回到任意位置去呼叫,但作用域的關係是在定義完函式時就已經被確定了的,與函式的呼叫位置無關。

x = 1

def f1():

def f2():

print(x)

return f2

def f3():

x = 3

f2 = f1() # 呼叫f1()返回函式f2

f2() # 需要按照函式定義時的作用關係去執行,與呼叫位置無關

f3() # 結果為1

也就是說函式被當做資料處理時,始終以自帶的作用域為準。若內嵌函式包含對外部函式作用域(而非全域性作用域)中變數的引用,那麼該『內嵌函式』就是閉包函式,簡稱閉包(closeures)

x = 1

def otuer():

x = 2

def inner():

print(x)

return inner

func = outer()

func() # 結果為2

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

# 直接傳參

def func(x):

print(x)

func(1000)

# 通過閉包函式傳參

def outer(number):

# number = 1000

# inner就是閉包函式

def inner()

print(number)

return inner

func = outer(1000) # ---》 inner位址 ---》 func變數名

func() # func ---> inner位址()

閉包函式的這種特性有時又稱為惰性計算。使用將值傳給函式的方式,在裝飾器中也將大有用處!

函式物件與閉包

函式物件指的是函式可以被當做 資料 來處理 1.函式可以被引用 def add x,y return x y func add func 1,2 32.函式可以當做引數傳遞 def foo x,y,func return func x,y foo 1,2,add 33.函式可以當做返回值使用 傳參的...

python 閉包函式 python函式物件和閉包

一 函式物件 函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,我們如下 1.1 函式可以被引用 def add x,y return x y func add func 1,2 1.2 函式可以作為容器型別的元素 dic dicdic add 1.3 函式可以作為引數傳入另外...

python中的函式物件與閉包函式

在python中,一切皆物件,函式也是物件 在python語言中,宣告或定義乙個函式時,使用語句 def func name arg1,arg2,func suite當執行流程遇到def語句時,會在記憶體中生成乙個函式物件。這個函式物件被定義為這個函式的名字。當我們呼叫函式時就要指定函式的名字,通過...