今天我們來講python裡的建立與呼叫函式。
先講建立函式,建立函式使用def關鍵字,就是define的縮寫。
上**看看吧:
def
say(info)
:print
(info)
這就是乙個名叫say的函式,我們來看看這個函式的結構:
def 函式名 (引數列表):
函式體注意,def建立函式也需要縮排。現在我們說說引數的傳遞。
函式的引數在定義時可以指定預設值,當函式被呼叫時,如果沒有傳入對應的引數值,則使用函式定義時的預設值替代。
可選引數一般都放置在非可選引數的後面,即定義函式時,先給出所有非可選引數,然後再分別列出每個可選引數及對應的預設值。
python語言同時支援函式按照引數名稱方式傳遞引數。
def 函式名(非可選引數列表, 可選引數 = 預設值):
函式體剛剛那個例子的info就是乙個非可選引數。非可選引數在呼叫的時候必須給乙個值,否則會報錯。我們再舉個例子:
choice =
input
('選擇1還是2?'
)def
game
(choice,win =
true):
if choice ==
'1':
win =
false
print
('你沒贏'
)if choice ==
'2':
win =
true
print
('你贏了'
)
執行一下,什麼都沒發生,對吧。因為函式在沒有呼叫的時候**塊是不會被執行的。所以我們得呼叫。python呼叫函式很簡單,就是像這樣:
def
say(info)
:print
(info)
say(
'fd'
)
知道怎麼呼叫了吧。其實就是:
函式名(引數)
這裡要講到兩個概念,函式上面的那個info叫做形參;呼叫時這個』fd』叫實參。傳遞函式就是將實參的值傳遞到形參。一般是一一對應地傳遞,比如這樣:
def
say(info,count)
:for i in
range
(int
(count)):
print
(info)
say(
'我很好',5
)
好玩吧,我們現在再看看另外兩種引數型別:
defa(
*d):
print
(sum
(d))a(3
,2,54
)
這個是可變引數型別,就是說可以賦多個值給它。我們可以看看它的型別:
defa(
*d):
print
(type
(d))a(3
,2,54
)
是乙個元組,對吧?
關鍵字引數,這種引數就是print函式裡的end引數,end就叫做關鍵字引數,我們創乙個函式來看看:
def
end_
(**b)
:print
(b)end_(end =
123)
然後這種的話,它就是乙個字典型別,大家也應該看到了列印的結果。
現在我來介紹乙個關鍵字:return。
如果需要返回值,使用保留字return和返回值列表。函式可以沒有return語句,函式體結束後會將控制權返回給呼叫者。
我們舉個例子:
def
fun():
a =5return a
fun(
)print
(fun(
))
看到了嗎,return函式返回值,在直接呼叫的時候並沒反應。我們再來看看不返回的結果:
def
fun():
a =5print
(a)fun(
)print
(fun(
))
第二個是不是none?
我們再講乙個很重要的概念,那就是全域性變數與區域性變數。
區域性變數就是比如這種:
def
fun():
a =45
這個a就是區域性變數,當函式呼叫完,程式就會釋放掉函式裡的所有區域性變數,使得函式內的區域性變數無法在外部使用。
def
fun():
a =45print
(a)
報錯了吧!
全域性變數就是我們以前學的那些變數,都叫全域性變數。全域性變數可以在整個程式中使用。
那全域性變數如果要在函式裡使用,就要用關鍵字global來宣告,比如這樣:
a =
45def
fun():
global a
a =56fun(
)print
(a)
a的值就改變了吧。
有些情況,全域性變數不用宣告即可在函式中用,例:
a =[1
,5]def
fun():
5)print
(a)
是不是加了?這種特殊情況我也缺乏經驗,所以大家多試試就行了。
一般考試會出類似這樣迷惑人的題。
a =
45def
fun():
a =42print
(a)
有比這種更難的,不過我有點忘了… python中的函式建立與呼叫
1 函式的定義 函式是邏輯結構化和過程化的一種程式設計方法 2 函式的定義方法 下面,簡單舉乙個例子 定義最大值函式 def 定義函式的關鍵字 max num 函式名 def max num x int y int int 此處的x y為形參 呼叫函式函式名 形參 呼叫函式時的引數,實參。一般實參要...
Python(五)建立並呼叫函式
該系列文章用來記錄一下自己在b站學習python時,進行上機練習用的 使用 pycharm 2020.3.3 慕課 python語言基礎與應用 北京大學 陳斌 字幕校對 建立乙個函式,接受乙個引數n n 100 判斷這個數是否為水仙花數 水仙花數 滿足如果這個數為m位數,則每個位上的數字的m次冪之和...
python 函式的定義與呼叫
函式的定義 def 函式名 def func print 函式的功能 函式的呼叫 函式名 遇到函式定義,簡單記錄一下 遇到了函式的呼叫,才會進入函式去執行 執行結束以後,會回到函式被呼叫的地方 繼續往下走 雙層巢狀的函式 看圖,理解直譯器的執行順序 理解輸出的結果 多層巢狀的函式 理解執行順序 輸出...