函式物件指的是函式可以被當做「資料」來處理,具體可以分為四個方面的使用。
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語句時,會在記憶體中生成乙個函式物件。這個函式物件被定義為這個函式的名字。當我們呼叫函式時就要指定函式的名字,通過...