# 高階函式
# 接收函式作為引數,或者將函式作為返回值返回的函式就是高階函式
deffun_1
(a, b)
:# 函式一:計算a,b的和
c = a + b
return c
# 接收函式作為引數的高階函式
deffun_2
(fun, n, a, b)
:# 函式二:計算n倍fun(a,b)的值
d = n * fun(a, b)
return d
result1 = fun_2(fun_1,2,
3,7)
print
(result1)
#20# 將函式作為返回值返回的高階函式
deffun_3
(a,b)
:return fun_1(a,b)
result2 = fun_3(2,
5)print
(result2)
#7
行成閉包的條件
# 閉包
# 建立一些只有當前函式能訪問的變數,可以將一些私有資料藏到閉包中
defmy_fun
(a, b)
: c =
10#內部定義了函式,形成函式巢狀
defin_fun
(a, b, c)
:# 用到了外部變數a,b
# c只能由in_fun函式訪問,不能從函式外訪問
d =(a + b)
* c return d
# 將函式作為返回值返回
return in_fun(a, b, c)
print
(my_fun(2,
5))# 70
# 裝飾器的引入
# def my_fun(*num):
# #求和函式
# s = 0
# for i in num:
# s += i
# return s
# print(my_fun(1,2,3,4,5,6,7)) #28
# 修改函式,實現新功能
deffun
(*num)
:#連乘函式
s =1for i in num:
s *= i
return s
print
(fun(1,
4,5,
6))#120
# 在內部進行了修改,違反ocp原則
# 裝飾器的使用
# 原函式
defmy_fun()
:print
('我是函式!'
)my_fun(
)#我是函式!
# 在不修改原函式的情況下拓展函式
defnew_fun
(fun)
:print
('hello!'
) fun(
)print
('執行結束了!'
)new_fun(my_fun)
# hello!
# 我是函式!
# 執行結束了!
# 但是這樣修改多個函式呢?不可能乙個乙個的新增啊
# 於是,修飾器來了
defyour_fun
(func)
:def
my_fun
(*num)
: func(
*num)
return my_fun
@your_fun
deffunc
(a,b)
: c = a+b
print
('求和函式:'
)print
("結果為:"
,c)func(5,
2)# 求和函式:
# 結果為: 7
# 多層修飾器
defhis_fun
(func)
:def
my_fun
(*args,
**kwargs)
:print
('他的函式:'
) func(
*args,
**kwargs)
print
('2333'
)return my_fun
defher_fun
(func)
:def
my_fun
(*args,
**kwargs)
:print
('她的函式:'
) func(
*args,
**kwargs)
print
('2333333'
)return my_fun
@his_fun
@her_fun
deffunc
(a,b,c)
:print
(a,b,c)
func(7,
8,9)
# 他的函式:
# 她的函式:
# 7 8 9
# 2333333
# 2333
python認識函式
出現了大量的if else 和迴圈的巢狀,的結構變得非常複雜,同時 重複量增加。和 之間的依賴性特別強烈 break的位置 函式 目的 簡化 開發,解耦合的一種手段。函式的意義 表示的是生活中的一種行為 行為 動作 行為在什麼時候會執行?人 吃飯的行為,行為只有在呼叫執行的時候才會發生動作。中的函式...
python基礎入門 09認識函式(二)
1 就是函式呼叫表示式的值 2 就是return關鍵字後的表示式的值 3 就是函式執行完成後返回給呼叫者的值 函式的呼叫過程 第一步 將實參傳遞給形參 傳參 用實參給形參賦值 第二步 執行函式體 第三步 獲取返回值 這個時候回到函式呼叫的位置 注意 函式在宣告的時候不會呼叫 如何看乙個函式的返回值是...
函式的基礎認識
函式是具有特定功能的一段 塊 函式定義完後不會去主動的執行,而是等待程式主動呼叫時 才會去執行 函式的宣告關鍵字 function 函式關鍵字 function 與 var關鍵字的行為幾乎一樣,都是在記憶體上開闢一段空間,用來儲存變數之中的資料 函式的宣告式 function 函式名 比如說 函式的...