函式是個取了名字的程式區塊,專們用來完成特定的工作,當我們要執行函式時,可以呼叫函式的名字來完成工作,若需要在一個程式中執行同一項工作很多次,那我們不需要一直寫重複的程式碼,我們只需要呼叫函式來幫我們完成工作
我們需要用到def關鍵字來告知python我們要定義一個函式
範例如下 :
def hello_world(): # 定義一個hello_world()函式
print("hello world") # 函式的工作是印出hello world
hello_world() # 呼叫hello_world()函式
輸出結果 :
hello world
做法是在我們已經定義的函式括號內放入參數,藉由放入參數來接收我們在呼叫函式時所傳入的任意值
範例如下 :
def greet(name): # 在greet函式放入name去接收任意值,在這裡是接收到"Weiting"
print("hello,"+name)
greet("Weiting") # 呼叫greet()函式
輸出結果 :
hello,Weiting
在函式中定義的變數是參數,被函式呼叫的是引數,因為函式定義可以有多個參數,所以呼叫函式也可能需要多個引數,我們可以使用位置引數和關鍵字引數
位置引數是編寫順序要和參數的順序相同,每個引數都要對應到函式定義的參數,如果引數位置順序不對的話,程式不會出錯,但輸出的結果可能不是我們想要的 ! 所以要檢查好引數和參數有沒有對應好
範例如下 :
def pets(pet_name,pet_type): # 定義pets函式需要兩個引數
print("I have a "+pet_type+" and its name is "+pet_name)
#以下是函式的多次呼叫,只要在呼叫一次函式它就會印出對應的值
pets("dog","tony") # 將dog引數放入pet_type參數中、tony引數放入pet_name參數中
pets("cat","candy")
輸出結果 :
I have a dog and its name is tony
I have a cat and its name is candy
關鍵字引數是傳入函式的名-值對,它不像位置引數需要考慮位置順序有沒有一致,我們只需要明確的指出函式中定義的參數名字
範例如下 :
def pets(pet_name,pet_type):
print("I have a "+pet_type+" and its name is "+pet_name)
# 將pet_name和pet_type交換也是沒關係的,對應的值對了就好
pets(pet_type="dog",pet_name="tony") # 明確的指出pet_type對應dog、pet_name對應tony
pets(pet_name="candy",pet_type="cat")
輸出結果 :
I have a dog and its name is tony
I have a cat and its name is candy
可以先給定參數一個預設值,如果在呼叫函式時沒給值的話,就會用預設值來處理
範例如下 :
def pets(pet_name,pet_type="dog"):
print("I have a "+pet_type+" and its name is "+pet_name)
pets(pet_name="tony") # 預設pet_type是dog所以只要傳入pet_name就好
pets(pet_name="candy",pet_type="cat") # 如果不是dog的話就傳入新的pet_type它就不會使用預設值
輸出結果 :
I have a dog and its name is tony
I have a cat and its name is candy
附上排版較優美的
HackMD網址 : https://hackmd.io/zhQZ0utkTJO7_S9cGDnrPA?both
資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯