廖雪峰python教程學習筆記(函式)

2021-09-11 09:51:11 字數 3817 閱讀 9928

1.max函式可以接收任意多個引數,並返回最大的那個

2.函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個別名:

3.在python中,定義乙個函式要用def語句,依次寫出函式名、括號、括號中的引數和冒號,然後在縮排塊中編寫函式體,函式的返回值用return語句返回,例如:

4.如果想多次利用自己定義的函式,可以把函式儲存到.py檔案中,可以在該檔案當前目錄下啟動python直譯器,用「from 檔名 import 函式名」 來匯入相應的函式,其中檔名不含.py副檔名

5.如果想定義乙個什麼事也不做的空函式,可以用pass語句:

6.pass語句可以用來作為佔位符,比如還沒想好怎麼寫函式的**,就可以先放乙個pass,讓**能執行起來,也可以用在其它語句中,比如if:

7.python函式可以返回多個值:

8.但是其實這只是個假象,python返回的仍然是個單一值,返回值是個tuple:

也就是說同時返回多個值時,其實返回的就是乙個tuple

9.函式執行完畢也沒有return語句時,自動return none

>>

>

import math

>>

> math.sqrt(2)

1.4142135623730951

import math

defquadratic

(a,b,c)

: d=b**2-

4*a*c

e=math.sqrt(d)

f=-(b+e)/2

*a g=

-(b-e)/(

2*a)

h=-(b+e)/(

2*a)

return g,h

1.python函式除了正常定義的必選引數外,還可以使用預設引數、可變引數和關鍵字引數,使得函式定義除來的介面,不但能處理複雜的引數,還可以簡化呼叫者的**。

2.位置引數:正常定義的引數都叫位置引數,如下面**中的x,n都是位置引數:

>>

>

defpower

(x,n):.

.. s=1.

..while n:..

. s*=x..

. n-=1.

..return s

3.預設引數:我們可以把第二個引數n的預設值設定為2:

def

power

(x,n=2)

: s=

1while n:

n=n-

1 s*=x

return s

這樣,我們寫power(5)時,預設第二個引數為2,而如果要計算其它次方,則應該明確地傳入n.

4.設定預設引數時,有幾點要注意:

>>

>

defcal

(*numbers):.

..sum=0.

..for n in numbers:..

.sum

+=n*n..

.return

sum

這樣我們就可以在實際呼叫中隨便傳入引數了

9.而如果把乙個已有的list或tuple內的元素變成可變引數傳進去,可以直接把函式的引數寫成 *list/tuple 名,如:

>>

> nums=[1

,2,3

]>>

> cal(

*nums)

14

1.可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,然後這些關鍵字在函式內部自動組裝為乙個dict。如:

>>

>

defperson

(name,age,

**kw):.

..print

('name:'

,name,

'age:'

,age,

'other:'

,kw)

>>

> person(

'mike',30

,gender=

'm',job=

'actor'

)name: mike age:

30 other:

2.關鍵字引數有什麼用?它可以擴充套件函式的功能。比如,在person函式裡,我們保證能接收到name和age這兩個引數,但是,如果呼叫者願意提供更多的引數,我們也能收到。試想你正在做乙個使用者註冊的功能,除了使用者名稱和年齡是必填項外,其他都是可選項,利用關鍵字引數來定義這個函式就能滿足註冊的需求。

3.它和可變引數類似,也可以先組裝出乙個dict,然後把該dict轉換為關鍵字引數傳進去:

>>

> extra=

>>

> person(

'john',20

)name: john age:

20 other:

>>

> person(

'john',20

,**extra)

name: john age:

20 other:

1.如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接受city和job作為關鍵字引數,定義的函式如下: ```python def person(name,age,*,city,job): print(name,age,city,job) ```

2.命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯。

3.對於任意函式,都可以通過類似func(*args,**kw)的形式呼叫它,無論它的引數是如何定義的。

1.要注意定義可變引數和關鍵字引數的語法: *args是可變引數,接收的是乙個tuple; **kw是關鍵字引數,kw接收的是乙個dict。

就是用python實現漢諾塔而已:

def

move

(n,a,b,c):if

(n==1)

:print

(a,'-->'

,c)else

: move(n-

1,a,c,b)

print

(a,'-->'

,c) move(n-

1,b,a,c)

python廖雪峰教程 學習筆記

如何用字元來描述字元 d匹配數字 digit w匹配字母或數字 word s可以匹配空格 space 表示任意個字元,表示至少乙個字元 表示0個或1個字元,表示n個字元,表示n m個字元 可以匹配任意字元 例如 kongxiangyu w如何做到更精確的匹配?規定數字 字母或者下劃線 0 9a za...

廖雪峰python教程筆記1

d.get thomas 1 檢查字典中是否有 thomas 的key,沒有返回 1,沒有指定返回值預設返回none d.pop bob 刪key 字典key不能為列表 s set 1,2,3 set需要以list作為輸入集合,不能重複且無順序。s.add s.remove s1 s2 s1 s2 ...

廖雪峰Python教程筆記(六)

在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 module 模組的好處 為了避免模組名衝突,pyt...