iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
自我挑戰組

初學者Python的應用實作系列 第 12

DAY 12 認識函式

簡單介紹函式

函式是個取了名字的程式區塊,專們用來完成特定的工作,當我們要執行函式時,可以呼叫函式的名字來完成工作,若需要在一個程式中執行同一項工作很多次,那我們不需要一直寫重複的程式碼,我們只需要呼叫函式來幫我們完成工作

  • 定義函式

我們需要用到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譯


上一篇
DAY 11 while迴圈應用
下一篇
DAY 13 函式應用( 1 )
系列文
初學者Python的應用實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言