Python 4 函式和抽象

2021-10-09 22:42:55 字數 3504 閱讀 3551

二、函式的使用和呼叫

函式是一段具有特定功能的、可重用的語句組,是一種功能的抽象,一般函式表達特定功能,可以降低編碼難度,可以**復用。

def

《函式名》

(引數)

:《函式體》

return

《返回值》

函式定義時,所指定的引數是一種佔位符;函式定義後,如果不經過呼叫,不會被執行。

函式定義時不會呼叫,呼叫時給出實際引數,替換定義中的形參。

def

《函式名》

(《引數》):

《函式體》

return

《返回值》

def(

《實際引數》

)

函式可以有引數,也可以沒有引數,但是必須保留括號。

def

《函式名》()

:《函式體》

return

《返回值》

函式定義時可以為某些引數指定預設值,從而構成可選引數,呼叫時不給可選引數傳遞值,則使用預設值。

def

《函式名》

(《非可選引數》

,《可選引數》):

《函式體》

return

《返回值》

收集引數:函式定義時可以設計可變數量的引數,就是不確定引數的總數量。

def

《函式名》

(《引數》

,*b)

:《函式體》

return

《返回值》

例如,python中定義min(),max()等函式都是用的可變數量引數。

def

fact

(n,*b)

: s =

1for i inrange(

1,n+1)

: s *= i

for item in b:

s *= item

return s

函式可以返回0個或者多個結果,其返回多個值時用的就是元組型別。

def

fact

(n,m=1)

: s =

1for i in

range(1

,n+1):

s *= i

return s//m,n,m

>>

> fact(10,

5)(725760,10

,5)>>

> a,b,c = fact(10,

5)>>

>

print

(a,b,c)

725760

105

程式中使用的變數為全域性變數,函式中間的引數和變數為區域性變數:

1)區域性變數是函式內部的佔位符,與全域性變數可能重名但是不同,函式內部運算結束之後,區域性變數就會被釋放。

2)通過global在函式中使用全域性變數。

3)如果函式內部使用了組合資料型別為區域性變數且未真實建立,等同於全域性變數。但是如果函式內部真實建立了該區域性變數,那麼就為區域性變數

>>

> ls =

['f'

,'f'

]>>

>

deffunc

(a):

return

>>

> func(

'c')

>>

>

print

(ls)

['f'

,'f'

,'c'

]

>>

> ls =

['f'

,'f'

]>>

>

deffunc

(a):

ls =

return

>>

> func(

'c')

>>

>

print

(ls)

['f'

,'f'

]

1)什麼是作用域:作用域類似與字典,對於乙個賦值語句x=1,x指向值1的乙個對映,通過內建函式vars可以返回這個字典。

全域性作用域外,每呼叫乙個函式都會建立乙個區域性作用域

>>

>

deffoo()

: x =42.

..>>

> x =

1>>

> foo(

)>>

> x

1

2)如何在區域性作用域中訪問全域性變數:讀取全域性變數的值通常不會有問題,但還是存在出現問題的可能性。如果有乙個區域性變數或引數與你要訪問的全域性變數同名,就無法直接訪問全域性變數,因為它被區域性變數遮住了。

可使用函式globals來訪問全域性變數。這個函式類似於vars,返回乙個包含全域性變數的字典。(locals返回乙個包含區域性變數的字典。)例如:

>>

>

defcombine

(parameter):.

..print

(parameter +

globals()

['parameter'])

...>>

> parameter =

'berry'

>>

> combine(

'shrub'

) shrubberry

3)關於作用域的巢狀:python函式可以巢狀,即可將乙個函式放在另乙個函式內。

使用乙個函式來建立另乙個函式:內部函式可以訪問外部函式的區域性作用域中的變數。

def

multiplier

(factor)

:def

multiplybyfactor

(number)

:return number * factor

return multiplybyfactor

>>

> double = multiplier(2)

>>

> double(5)

10>>

> triple = multiplier(3)

>>

> triple(3)

9>>

> multiplier(5)

(4)20

Python(4) 函式與模組

def hi print hello,world for i in range 0,4 1 hi def listsum l res 0 for i in l res res i return res l2 1,2,3,4,5,6,7,8,9,10 sum2 listsum l2 print sum...

python 4函式式程式設計

1 高階函式 變數可以指向函式。def add x,y,f 例如f引數為函式 編寫高階函式,就是讓函式的引數能夠接收別的函式。python內建了map 和reduce 高階函式。1.1 將list每項相乘 def f x return x x r map f,1,2,3,4,5,6,7 list r...

python 4輸入和輸出

4 輸入和輸出 4.1 輸出 1.普通的輸出 電力的輸出,音訊的輸出 2.軟體中輸出 例如登入是輸入使用者名稱和密碼,如果有乙個不正確,會出現乙個對話方塊,提示使用者重新輸入使用者名稱和密碼。3.python中輸出 列印提示print hello word 4.格式化的輸出 print hello ...