# 1、可以被賦值
# func = 記憶體位址
deffunc()
:print
('from func'
)f = func
# 2、可以當成變數
deffunc()
:return
3def
foo(x)
:print
(x)foo(func)
# 記憶體位址
# 3、可以當成返回值
deffunc()
:return
3def
foo(x)
:return x
res = foo(func)
print
(res())
# func的記憶體位址
# 4、可以當作容器型別的乙個元素
l =[func,1
]dic =
# 用途很廣
dic =
1、函式的巢狀呼叫:在呼叫乙個函式過程中呼叫其他函式
def
max2
(x, y)
:if x > y:
return x
else
:return y
defmax4
(a, b, c, d)
:# 第一步: 比較a和b 得到res1
res1 = max2(a, b)
# 第二步: 比較res1和c 得到res2
res2 = max2(res1, c)
# 第三步: 比較res2和d 得到res3
res3 = max2(res2, d)
return res3
2、函式的巢狀定義:在函式內定義函式
# 不常用
deff1
(action=0)
:if action ==0:
deff2()
:print(1
)else action==1:
deff3()
:print
(2
# 永遠在定義的時候「包」好
# 閉函式
deff1()
:deff2(
):pass
# 閉包函式
deff1()
: x =
33deff2(
):print
(x) f2(
)x =
11f1(
)# 33 # 外部變數不影響內部的變數
deffoo()
: x =
22 f1(
)#
# 如何全域性拿到f2
deff1()
: x =
3333
deff2()
:print
(x)return f2
f = f1(
)
import requests
# 方案一: 普通傳參
defget
(url)
: res = requests.get(url)
print
(len
(res.text)
)get(
"")get(
"")# 閉包傳參
)# 都可以,但是如果普通傳參沒有辦法解決, 要知道還有一種解決方案,典型:裝飾器
函式物件和閉包
1.引用 func f1 print f1 f1 print func func func 2.當作容器類元素 lt f1,1,2,3 print lt 0 lt 0 print f1 f1 lt 0 3.當作函式引數 def f2 f2 f1 print f2 f1 f2 f1 f2 f1 f2 ...
函式物件 巢狀和閉包函式
精髓 可以把函式當成變數去用 func 記憶體位址 def func print from func f func 函式func賦值給變數f print f,func 列印f和func的記憶體位址,完全相同 f 相當於呼叫了函式func 輸出 func at 0x02f434a8 from func...
python函式物件和閉包函式
函式物件 函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,我們如下 函式可以被引用 def add x,y return x y func add func 1,2 3 函式可以作為容器型別的元素 dic dic dic add 1,2 3 函式可以作為引數傳入另外乙個函式 ...