概要
入力により処理を行い何か結果を返すプログラムの部品。何度も呼び出せる。pythonでは、関数でさえ変数。
検証
def hensu(): print("おいしいごはん") type(hensu)
表示イメージ
function
関数定義
基本
def 関数名(引数1, 引数2....)
処理
return 戻り値
※プログラムの区分けをみわけている為。
def show(show): print(show) def show2(): print("オレンジ")
呼出し
show("みかん")
show2()
表示イメージ
オレンジ みかん
戻り値 return
値を返してほしい時指定。
注意:戻り値にNoneを返す関数「print()など」を指定しても何もおこらない。
def plus(x, y): return x+y
呼出し
plus(2, 3)
表示イメージ
5
デフォルト引数
引数にデフォルト値を設定しておける。
def 関数名(引数1, 引数2=デフォルト値....)
処理
return 戻り値
→引数2に設定したら、引数3以降も設定。
def plus(x, y=5, z=3): return x+y+z
呼出し
print(plus(2, 7, 4)) # 2+7+4 print(plus(2, 7)) # 2+7+3 print(plus(2)) #2+5+3
表示イメージ
8
キーワード引数
キーワード引数で関数呼出しができる。
関数名(引数1,キーワード引数=デフォルト値....)
処理
return 戻り値
def plus(x, y=5, zkey=3): return x+y+zkey
呼出し
print(plus(2, zkey=10)) # 2+5+10
表示イメージ
17
可変長引数
基本
引数前に「*」をつける。
*引数名
def hensu(*args): print(args) hensu('ごはん', 'ライス', '飯')
表示イメージ
('ごはん', 'ライス', '飯')
リスト、タプル 可変長引数
def hensu(*args): print(args) lis=['ごはん', 'ライス', '飯'] hensu(*lis) tap=('ごはん', 'ライス', '飯') hensu(*tap)
表示イメージ
('ごはん', 'ライス', '飯') ('ごはん', 'ライス', '飯')
辞書型 可変長引数
引数前に「**」をつける。
**辞書型引数名
def hensu(**args): print(args) hensu(apr='卯月' , may= '皐月', june='水無月') dic_strg ={'卯月': '4月', '皐月': '5月', '水無月': '6月'} hensu(**dic_strg)
引数リスト アンパック
リスト変数名に「*」をつける
print(list(range(3, 6))) lis = [3, 6] print(list(range(*lis))) # リストアンパック
表示イメージ
[3, 4, 5] [3, 4, 5]
引数辞書 アンパック
リスト変数名に「**」をつける辞書のキーワード=キーワード引数名にすること。
def moon(mm1, moon='10月', nextmoon='11月'): print("今月", mm1, end=' ') print("翌月", moon, end=' ') print("翌々月", nextmoon) dic ={'mm1': '4月', 'moon': '5月', 'nextmoon': '6月'} moon("わからない") moon(dic) moon(*dic) moon(**dic)
表示イメージ
今月 わからない 翌月 10月 翌々月 11月 今月 {'mm1': '4月', 'moon': '5月', 'nextmoon': '6月'} 翌月 10月 翌々月 11月 今月 mm1 翌月 moon 翌々月 nextmoon 今月 4月 翌月 5月 翌々月 6月
ラムダ式 無名関数生成
無名の小さい関数。書き方
変数= lambda 引数1, ... : 処理
引数に値を渡す時。
変数= (lambda 引数1, ... : 処理)(渡す値1,...)
oyatu = "みかん" (lambda oyatu:oyatu+"おいしい!")(oyatu) num = list(map(lambda x:x**2,range(10))) #「lambda x:x**2」が無名関数 print(num)
表示イメージ
みかんおいしい! [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]