python基礎 函式

2021-09-29 23:10:41 字數 4045 閱讀 6693

函式是一段就具有特定功能的、可重複呼叫的語句組,用函式名來表示並通過函式名進行功能呼叫,而不需要在每個執行的地方重複編寫這些語句。

函式能夠完成特定功能,與黑盒類似,對函式的使用不需要了解函式內部實現的原理,只要了解函式的輸入輸出方式即可。嚴格地說,函式是一種功能抽象。

函式表示方式

def

《函式名》

(《輸入引數》):

《函式體》

return

《返回值》

引數列表是呼叫該函式時傳遞給它的數值,可以由零個、乙個或者多個,當傳遞多個引數時,各引數採用逗號分隔,當沒有引數時也要保留小括號。

1.呼叫程式在呼叫處暫停執行

2.在呼叫時將實參複製給函式的形參

3.執行函式體語句

4.函式呼叫結束給出返回值,程式回到呼叫前的暫停處繼續執行

形參:全稱為"形式引數" 由於它不是實際存在變數,所以又稱虛擬變數。是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳入的引數.在呼叫函式時,實參將賦值給形參。因而,必須注意實參的個數,型別應與形參一一對應,並且實參必須要有確定的值。

實參:全稱為"實際引數"是在呼叫時傳遞給函式的引數. 實參可以是常量、變數、表示式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

b=[4

,5,6

]print

(b)def

test

(d):

#定義函式test,其中d為形參

b=[7

,8,9

]print

("函式內部變數"

,b)print

("輸入引數"

,d,"並用0替換4"

) d[0]

=0defmain()

:print

("全域性變數b"

,b)print

("現在呼叫函式test輸入b"

) test(b)

#呼叫函式test,其中賦值給函式的b,就是實參

print

("函式呼叫結束"

)print

("全域性變數b"

,b)

main(

)

引數預設值:在函式定義時,如果有些引數存在預設值,即部分引數不一定需要呼叫程式輸入,可以在定義函式時直接為這些引數指定預設值。當函式被呼叫時,如果沒有傳遞對應的引數值,則使用函式定義時的預設值替代。

可選引數:由於函式呼叫時需要按順序輸入引數,可選引數必須定義在非可選引數的後面。(例如該形參已有預設值,函式呼叫時可以不輸入引數值,所以該形參為可選引數)

可變數量引數:在函式定義時們可以設計可變數量引數,通過在引數前面增加星號(*)實現。帶有星號的可變數量引數只能出現在引數列表的最後。

def

test

(a,d=1,

*c):

《函式體》

'''其中d是帶預設值的引數,如果呼叫函式時不賦值給b,那麼b預設等於1

*c是可變數量引數,它可以是零個或者多個輸入,可變數量引數只能出現在引數列表的最後

'''

傳遞方式:函式呼叫時,實參預設採用按照位置順序的方式傳遞給函式。同時,python提供了按照形參名稱輸入實參的方式,由於呼叫函式時指定了引數名稱,所以引數之間的順序可以任意調整。

全域性變數:全域性變數是指在函式之外定義的變數,一般沒有縮排,在程式執行全過程有效。

區域性變數:指在函式內部使用的變數,只作用函式內部,函式一但結束,該變數即得到釋放,即使函式多次呼叫,函式之間互不影響。

列表:列表的賦值和傳遞,僅僅是產生列表的乙個新的引用。即,列表在記憶體中只有存在乙個,對於該列表對其它地方賦值或者傳遞,只是對該記憶體的乙個新的引用。所以,在函式中,列表有點類似全域性變數。傳遞進函式內部進行計算的列表,對於該列表,只要函式中對列表進行修改了,該列表就修改了,函式外部的該列表也就修改了。

b=[4

,5,6

]#全域性變數

print

(b)#列印全域性變數b

deftest

(d):

#定義函式test,輸入全域性變數b

b=[7

,8,9

]#區域性變數b

print

("函式內部變數"

,b)print

("輸入引數"

,d,"並用0替換4"

) d[0]

=0defmain()

:print

("全域性變數b"

,b)print

("現在呼叫函式test輸入b"

) test(b)

print

("函式呼叫結束"

)print

("全域性變數b"

,b)#函式內部改變列表b,函式外部列表b發生改變

main(

)

函式作為一種**封裝,可以被其他程式呼叫,當然,也可以被函式內部**呼叫,也就是函式呼叫函式本身。這種函式定義中呼叫函式自身的方式稱之為遞迴。

遞迴的兩個關鍵特徵:

1.存在乙個或多個基例,基例不需要再次遞迴,他是確定的表示式。

2.所有遞迴鏈要以乙個或多個基例結尾

(遞迴函式是由限制的,當滿足某個條件時結束遞迴呼叫,即遞迴函式不可以無限呼叫自身)

import turtle

pi=3.1415926

#定義π

defastep

(long

,direction,angle)

:#畫一條線,輸入線的長度,之後的方向狀態

turtle.pendown(

) turtle.fd(

long

)if direction==1:

turtle.right(angle)

else

: turtle.left(angle)

turtle.penup(

)def

analyse

(n,l=

800)

:#n邊形,計算多邊形內角

angle=

(n-2)*

180/n

angle=

180-angle

long

=l/n

d=l/pi/

2 x=

pow(

pow(d,2)

/2,0.5

) turtle.goto(

-x,x)

for i in

range

(n):

astep(

long,1

,angle,

)def

setwin

(wid=

800,hig=

600,startx=

200,starty=

200,psize=

5,pcolor=

"black"):

#視窗初始化設定

turtle.setup(wid,hig,startx,starty)

turtle.pensize(psize)

turtle.pencolor(pcolor)

turtle.speed(1)

turtle.penup(

)def

infor()

:#使用者需求資訊收集

n=eval

(input

("請輸入多邊形邊數(大於2且是整數):"))

r=eval

(input

("請輸入多邊形周長,不確定時請輸入「0」"))

return n,r

defmain()

:#主函式

n,r=infor(

) setwin(

)if r==0:

analyse(n)

else

: analyse(n,r)

main(

)

Python基礎 函式

函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...

Python 函式基礎

定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...