Python學習筆記
Day_06-函數(shù)(一)
函數(shù)是編程語言里必不可少的一部分跷坝。編程中的函數(shù)是一定數(shù)量锌历、實現(xiàn)單一或者關聯(lián)功能的代碼塊侈离。
函數(shù)的存在,能夠很好地避免代碼的重復使用萨脑。
函數(shù)包括系統(tǒng)內置函數(shù)(如print())以及用戶自定義的函數(shù)隐轩。
6.1 定義函數(shù)
- 定義函數(shù)的關鍵詞
def
-
def
后名緊跟函數(shù)名,函數(shù)名后面是()
渤早,()
內部可以有參數(shù)职车,也可以沒有參數(shù); -
()
后面是冒號:
鹊杖,和前面學的條件提鸟、循環(huán)語句類似,:
的存在表面了一種隸屬關系仅淑,也就是下面的語句都屬于我這次定義的函數(shù)。 - 還有類似的地方胸哥,函數(shù)內部的語句也是需要縮進涯竟。
-
return
往往出現(xiàn)在函數(shù)語句的最后,用以說明定義函數(shù)的返回值,即函數(shù)的輸出數(shù)據(jù)庐船。Vamei提到银酬,函數(shù)中的return
起到了返回且終止的作用。換句話說筐钟,如果函數(shù)內部在return
后面還有語句揩瞪,函數(shù)在執(zhí)行的時候只執(zhí)行到return,后面的語句將不會被執(zhí)行篓冲。 -
return
不是必需的函數(shù)語句李破,如果沒有return
,函數(shù)返回值為None壹将,即為空數(shù)據(jù)嗤攻;return
后也可以返回多個值,用逗號隔開诽俯。如return a, b, c
函數(shù)定義的通用格式如下:
def 函數(shù)名(參數(shù)):
函數(shù)體
接下來妇菱,我學著定義一個函數(shù)。
"""
python學習筆記-day06
函數(shù)的一些知識及用法暴区。
version:0.1
author:chris
公眾號:穎川河
"""
def num_plus(a, b):
c = a + b
return c
x, y = 10, 22
print(num_plus(x, y))
輸出結果為:
32
需要注意的是闯团,根據(jù)PEP8的要求,在定義函數(shù)的時候仙粱,函數(shù)的前面及后面都要有兩個空行房交。
6.2 調用函數(shù)
“定義了函數(shù),就像打造了一把利器缰盏,這把利器必須使用起來涌萤,才能發(fā)揮作用”(Vamei)。
使用函數(shù)的過程稱作函數(shù)的調用口猜。
函數(shù)定義的時候负溪,自身參數(shù)稱之為“形參”,函數(shù)調用時的參數(shù)稱之為“實參”济炎。
函數(shù)定義之后川抡,使用的過程中給他賦予實實在在的參數(shù),并得到函數(shù)返回值须尚,就是函數(shù)的調用過程崖堤。以上面第一個例子為據(jù),函數(shù)調用還可以這么寫:
def num_plus(a, b):
c = a + b
return c
print(num_plus(10, 22))
函數(shù)在調用的時候耐床,會自動根據(jù)參數(shù)的位置認定其與形參的對應關系密幔。即10對應形參a,22對應形參b撩轰。
而第一個例子中胯甩,函數(shù)調用時的參數(shù)是系統(tǒng)中已經(jīng)存在的變量昧廷。
6.3 函數(shù)例子
構建函數(shù)求最大公約數(shù)。
最大公約數(shù)有兩種常用的方法:輾轉相除法和更相減損法.
輾轉相除法(引自百度百科):
例如偎箫,求(319木柬,377):
∵ 319÷377=0(余319)
∴(319,377)=(377淹办,319)眉枕;
∵ 377÷319=1(余58)
∴(377,319)=(319怜森,58)速挑;
∵ 319÷58=5(余29)
∴ (319,58)=(58塔插,29)梗摇;
∵ 58÷29=2(余0)
∴ (58,29)= 29想许;
∴ (319伶授,377)=29。
代碼如下:
def gcb_division(a, b):
while a > 0 and b > 0:
c = a % b
if c != 0:
a = b
b = c
else:
return b
print(gcb_division(377, 319))
運行結果為:
29
更相減損法(引自百度百科):
第一步:任意給定兩個正整數(shù)流纹;判斷它們是否都是偶數(shù)糜烹。若是,則用2約簡漱凝;若不是則執(zhí)行第二步疮蹦。
第二步:以較大的數(shù)減較小的數(shù),接著把所得的差與較小的數(shù)比較茸炒,并以大數(shù)減小數(shù)愕乎。繼續(xù)這個操作,直到所得的減數(shù)和差相等為止壁公。
則第一步中約掉的若干個2與第二步中等數(shù)的乘積就是所求的最大公約數(shù)感论。
代碼如下:
def gcb_minus(a, b, i):
i == 0
while a % 2 == 0 and b % 2 == 0:
a = a / 2
b = b / 2
i += 1
while True:
c = int(abs(a - b))
a = b
b = c
if c == 0:
return a*2**i
print(gcb_minus(260, 104, 0))
輸出結果如下:
52
6.4 小結
這一節(jié)學習了函數(shù)最基本的知識點,并且嘗試著定義了函數(shù)紊册,也通過一個例題來說明函數(shù)的使用比肄。后面還會進一步學習函數(shù)參數(shù)的傳遞等方面的內容。