欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

怎樣才能寫好一個Python函數(shù)?

錢衛(wèi)國2年前12瀏覽0評論

在Python中定義函數(shù)。

1.比如用Python寫一個斐波那契數(shù)列函數(shù):

>>>deffib(n):#writeFibonacciseriesupton

..."""PrintaFibonacciseriesupton."""

...a,b=0,1

...whilea<n:

...print(a,end='')

...a,b=b,a+b

...print()

...

函數(shù)調(diào)用:

>>>#Nowcallthefunctionwejustdefined:

...fib(2000)

011235813213455891442333776109871597

在Python函數(shù)中,def關(guān)鍵字聲明一個函數(shù)定義,函數(shù)名稱緊跟其后,函數(shù)名稱后面是包含參數(shù)列表的小括號,最后是冒號結(jié)尾。

然后Python函數(shù)的函數(shù)體從下一行開始,必須注意要有字符縮進。

Python的函數(shù)調(diào)用,比如:

>>>fib(0)

>>>print(fib(0))

None

2.fib(n)是沒有返回值的函數(shù),下面寫一個有返回值的Python函數(shù),返回[]list列表:

>>>deffib2(n):#returnFibonacciseriesupton

..."""ReturnalistcontainingtheFibonacciseriesupton."""

...result=[]

...a,b=0,1

...whilea<n:

...result.append(a)#seebelow

...a,b=b,a+b

...returnresult

...

函數(shù)調(diào)用:

>>>f100=fib2(100)#callit

>>>f100#writetheresult

[0,1,1,2,3,5,8,13,21,34,55,89]

函數(shù)fib2(n)實例中展示了新的Pythonfeature,其中return用于聲明當(dāng)前函數(shù)返回一個值,result.append(a)調(diào)用了list對象result的append函數(shù),append是由對象的類型決定的函數(shù),實際上相當(dāng)于result=result+[a],但是append的效率更高。

3.在Python函數(shù)定義中定義多個參數(shù)列表,以及為參數(shù)賦上默認值:

defask_ok(prompt,retries=4,reminder='Pleasetryagain!'):

whileTrue:

ok=input(prompt)

ifokin('y','ye','yes'):

returnTrue

ifokin('n','no','nop','nope'):

returnFalse

retries=retries-1

ifretries<0:

raiseValueError('invaliduserresponse')

print(reminder)

這里又個非常重要的警告,需要在實際項目中多加注意!!默認值通常只計算一次,但是如果默認值是可變的,比如list,就會有如下情況:

deff(a,L=[]):

L.append(a)

returnL

print(f(1))

print(f(2))

print(f(3))

輸出結(jié)果為:

[1]

[1,2]

[1,2,3]

可以改為:

deff(a,L=None):

ifLisNone:

L=[]

L.append(a)

returnL

4.函數(shù)里的關(guān)鍵字參數(shù)

形式是kwarg=value

defparrot(voltage,state='astiff',action='voom',type='NorwegianBlue'):

print("--Thisparrotwouldn't",action,end='')

print("ifyouput",voltage,"voltsthroughit.")

print("--Lovelyplumage,the",type)

print("--It's",state,"!")

defcheeseshop(kind,*arguments,**keywords):

print("--Doyouhaveany",kind,"?")

print("--I'msorry,we'realloutof",kind)

forarginarguments:

print(arg)

print("-"*40)

forkwinkeywords:

print(kw,":",keywords[kw])

5.特殊參數(shù)

deff(pos1,pos2,/,pos_or_kwd,*,kwd1,kwd2):

-------------------------------

Positionalorkeyword

-Keywordonly

--Positionalonly

6.注意函數(shù)的代碼風(fēng)格和命名規(guī)范

比如使用4個空格鍵為不是tab縮進等。