関数を作る(Python)
今回は関数を作ることについて。理解していないことの多さを痛感。
関数の定義
def 関数名():
処理
return
def name(na): return na def hello(): print(name('ねこ') + "さん、こんにちは!!") #ねこさん、こんにちは!!
printで'+'をつけることを忘れそうになる
複数return
','で区切ることで複数の要素をreturnできる
○タプル
下のようにreturnすると、型はタプル
def test(): return 'zero', 0 print(type(test())) <class 'tuple'>
○リスト
'[]'で囲むことで型がリストになる
def test(): return ['zero', 0] print(type(test())) #<class 'list'>
デフォルト引数
def 関数名(引数=デフォルト値,引数=デフォルト値): 関数のブロック #引数を指定せず関数を実行すると、デフォルト引数が入る
def name(na = '名無し'): return na print(name() + "さん!") #名無しさん! print(name('ねこ') + "さん!") #ねこさん!
デフォルト引数の注意点
デフォルト値は最初に一度だけしか評価されないので、
リストや辞書といった変更可能なオブジェクトを使う際、注意が必要
def list_beta(lst = []): lst.append('Hello') print(lst) list_beta() list_beta() list_beta() list_beta(['Good','Morning']) #['Hello'] #['Hello', 'Hello'] #['Hello', 'Hello', 'Hello'] #['Good', 'Morning', 'Hello']
デフォルト引数は不変のものを設定する方が良い
def list_beta(lst = None): if lst is None: lst = [] lst.append('Hello') print(lst) list_beta() list_beta() list_beta(['Good','Morning']) #['Hello'] #['Hello'] #['Good', 'Morning', 'Hello']