目錄
目錄
前言
這一篇式相繼上一篇5.1Python函式(一)的進階文章。
一個重要的思想是:我們把”函式名“當成一個變數來處理。
(一)偏函式
==1.說明==
偏函式:在不修改原函式的原函式前提下,修改函式的預設值,新建的函式叫偏函式。
==2.原始碼==
# 定義一個有預設值的函式
def test1(a, b, c, d=1):
print(a+b+c+d)
# 現在有一個需求,想把預設值改為c=2,d=3
# 我們需要在重新構造一個全新的函式?
# 不需要,下面的定義類似類的繼承,也就是偏函式的定義
def test2(a, b, c=2, d=3):
test1(a, b, c, d)
# 呼叫偏函式
test2(1, 2)
==3.顯示效果==
(二)高階函式
==1.說明==
函式名也是一個變數,也可以通過賦值,傳遞給其他變數。
當函式的形參接收的是一個函式名的時候,則稱該函式是高階函式
==2.原始碼==
# 動態的計算兩個數
def caculate(num1, num2, caculatefun):
result = caculatefun(num1, num2)
print(result)
# 求差函式
def mysum(a, b):
result = a + b
print("求和函式")
return result
# 求和和函式
def mysub(a, b):
result = a - b
print("求差函式")
return result
# 呼叫高階函式
caculate(4, 2, mysum)
caculate(4, 2, mysub)
==3.執行效果==
(三)返回值函式
==1.說明==
當函式的返回值是:一個函式名稱時,我們稱返回值函式
==2.原始碼==
# 定義一個返回值函式
def get_fun(symbol):
# 子函式求和
def my_sum(a, b):
return a+b
# 子函式求差
def my_sub(a, b):
return a-b
# 根據判斷返回不同的函式名
if symbol == "+":
return my_sum
elif symbol == "-":
return my_sub
# 呼叫返回函式
func = get_fun("+")
result = func(1, 2)
print(result)
==3.執行效果==
(四)匿名函式
==1.說明==
沒有名字的函式,我們稱匿名函式,也稱lambda函式。
語法:lambda var1, var2,……:表示式
注意:只能寫一個表示式,而且只能用一次。
==2.原始碼==
# 定義一個匿名函式
func = lambda x, y: x + y
result = func(1, 2)
print("結果是:", result)
==3.執行效果==
(五)閉包函式
==1.說明==
首先清楚兩個概念:
外部函式:在外出定義的函式。
內部函式:巢狀在一個函式裡面的和函式。
閉包函式的定義:(滿足三個條件)
- 必須有函式巢狀
- 內部函式引用到外部的變數
- 返回值是內部函式名
注:內部函式需要修改外部變數,需要用nolocal 宣告
==2.原始碼==
# 定義一個閉包函式
def test(a):
b = 2
def test2():
nonlocal b
b = 5
print("a:", a)
print("b:", b)
return test2
# 呼叫閉包函式
fun = test(1)
fun()