1. 函式簡介
2. 函式引數
3. 函式作用域
4. 遞迴函式
5. 高階函式1. 函式簡介
1.1 函式分類
# 語法
deffunname
(parm1, parm2...
.): expresssions
2. 函式引數
2.1 形參與實參
2.2 引數傳遞方式
def
f1(name, age)
:print
('name ='
, name,
',age ='
, age)
f1('葫蘆娃',10
)
def
f1(name, age)
:print
('name ='
, name,
',age ='
, age)
f1(age=
10, name=
'葫蘆娃'
)
2.3 不定長引數def
f1(a,
*b, c,
**d)
:print
(a,type
(a))
# 1
print
(b,type
(b))
# (2, 5)
print
(c,type
(c))
# 70
print
(d,type
(d))
# f1(1,
2,5, c=
70, d=
25, e=
17)
引數解包,傳遞實參時在變數前加*,這樣會自動將序列中引數依次傳遞
def
f1(a,
*b, c,
**d)
:print
(a,type
(a))
# 1
print
(b,type
(b))
# (2, 5)
print
(c,type
(c))
# 70
print
(d,type
(d))
# # 定義乙個元組
t =(2,
5)# 定義乙個字典
d =f1(1,
*t, c=70,
**d)
# 引數的解包,含義與上面等價
3. 函式作用域
3.1 全域性作用域
3.2 函式作用域
3.3 命名空間
4. 遞迴函式
# 求10的階乘 10!
# 分解:10! = 10*9! = 10*9*8! ... = 10*9*8..*2*1! = 10*9*8...*2*1
# 定義遞迴函式
deffac
(n):
if n >1:
# n > 1 為遞迴條件
return n*f(n-1)
return
1# n == 1 為邊界條件,直接返回結果
print
(fac(10)
)# 輸出 3628800
5. 高階函式# 定義函式
deff()
:deffn(
):print
('hello world'
)return fn
# 執行f函式
res = f(
)res(
)# 列印 hello world
5.1 閉包
形成閉包條件
5.2 裝飾器
# 定義兩個運算元數的加法器
defadd
(a, b)
:return a+b
# 定義三個運算元的乘法器
defmul
(a, b, c)
:return a*b*c
# 定義高階函式,引入裝飾器,並使用不定長引數
deff
(funname)
:deffn(
*args,
**kwargs)
:# 為當前函式funname擴充套件 開始執行 與 執行完畢 兩條語句
print
('開始執行...'
) res = funname(
*args,
**kwargs)
print
('執行完畢...'
為簡化工作,python內部自定義了裝飾器的使用,用@代替
# 如上,定義相同f高階函式..
....
@fdef
add(a, b)
:return a+b
@fdef
mul(a, b, c)
:return a*b*c
# 可直接呼叫,輸出結果相同
print
(add(40,
50))print
(mul(2,
4,6)
)
07 Python小節案例
採集乙個人的身高,體重,年齡和性別 告訴ta,自己的體脂率是否在正常範圍之內 1.知識考察點 注釋 輸入輸出 變數使用 變數的命名規範 運算子的使用 資料型別轉換 2.體脂率計算公式 bmi 體重 kg 身高 身高 公尺 體脂率 1.2 bmi 0.23 年齡 5.4 10.8 性別 男 1 女 0...
07python實現traceroute程式
這個指令碼是實現linux中traceroute程式的,是探測從我們這個機器到我們要探測的ip位址中間都需要經過那些路由。原理 我們的機器傳送udp高階口的資料報,傳送給目的位址,首先設定ttl為1,然後逐次增加,在沒有到達我們的目的ip 位址的路由,會傳送icmp的超時報文,然後我們從中提取ip位...
07 Python 條件判斷與迴圈
1 if.else a 10 if a 10 print a大於等於10 else print a小於等於10 2if.elseif.else age 22 if age 18 print 成年了 elif age 16 print 半成年 else print 未成年 2.1 for 迴圈user...