07 Python函式基礎

2021-10-05 09:12:09 字數 2971 閱讀 9946

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...