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