iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
自我挑戰組

30天學會Python系列 第 17

Python - Function函數(1) - 定義、預設參數、關鍵字參數

  • 分享至 

  • xImage
  •  

Define function

在python中定義一個函數的語法為:

def function_name(parameter_list):
    """function document string"""    
    function implement    
    return expression

def後放函數名稱,小括號內放所需參數,函數第一行可以接docstring放置函數註解文本,在有些提示工具中會顯示提示字樣,隨後放置函數功能實現程式碼,最後放置return回傳值

預設參數 Default Argument

可給予一個或多個引數預設值,在呼叫函數時可以用幾種方式呼叫,如:

  • 只給必須參數
  • 給定必須參數及可選參數
  • 給定必須參數及所有可選參數

可選參數如果沒有全部使用,則按照填入順序指派預設參數,來看看下面的範例:

#%% Function parameter and default argument values
def hello_func(greeting, num = 2, name = 'You'):
    print("{}, {}, {} Function.".format(greeting, num, name))
    
hello_func('Hi')
hello_func('Hi', 5)
hello_func('Hi', 'HowHow')
hello_func('Hi', 5, 'HowHow')

關鍵字參數 Keyword Arguments

定義函數時可定義
* required argument 或是
* optional argument

#%% Keyword arguments
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    print("-- This parrot wouldn't", action, end=' ')    
    print("if you put", voltage, "volts through it.")    
    print("-- Lovely plumage, the", type)    
    print("-- It's", state, "!")

呼叫函數時可選擇輸入

  • keyword argument 或是
  • positional argument

在呼叫函數時可以使用關鍵字來指定其參數值,不需要依照宣告順序來呼
keyword argument 必須跟在 positional argument 後面

parrot(1000) # 1 positional argument
print('---------------------------------------------')
parrot(voltage=1000) # 1 keyword argument
print('---------------------------------------------')
parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
print('---------------------------------------------')
parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
print('---------------------------------------------')
parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
print('---------------------------------------------')
parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword

# invalid
# parrot() 
# required argument missing
# parrot(voltage=5.0, 'dead') 
# non-keyword argument after a keyword argument
# parrot(110, voltage=220) 
# duplicate value for the same argument
# parrot(actor='John Cleese') 
# unknown keyword argument

補充

不支援重載 overload
也就是說在python中同一個名稱空間,函數定義不能出現相同的名稱,若出現相同名稱,則後者覆蓋前者定義,在python中若需要使用不同參數個數來區分函數,則使用預設參數機制來解決
https://openhome.cc/Gossip/Python/DefStatement.html


上一篇
Python - try/except 錯誤與異常
下一篇
Python - Function函數(2) - 可變參數列表、Unpacking 參數列表
系列文
30天學會Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言