Pythonを勉強しよう! 関数パラメータに初期値を設定する
Python初心者の備忘録.....
今回は起動先の関数側で、予め初期値を設定しておく方法です。
Pythonには関数パラメータに初期値を持たせておくことができます。これを「デフォルト引数」と呼び、 関数起動時にパラメータの指定を省略しても、そのパラメーターにはあらかじめ与えられる引数をいいます。
パラメータ値の幅がある場合、普通に使うときはX X値。カスタマイズして使用したいときは、Y Y値に変えて動作させたい。
そのようなケースにおいてとても便利な仕組みです。
ただし、インタフェースを確認、理解した上で設計・コーディングしないと、あとでインタフェースミスに繋がる可能性があるため要注意です。
デフォルト引数ができる記述
パラメータが一つの場合
def "関数名"( " パラメータ名 " = " デフォルト値 ") : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 = "defalutPara"): print( para1 ) # defaultパラメータ設定を使用した場合 defaultParaTest() # defaultパラメータ値を変更した場合 defaultParaTest("changePara") # 出力結果 # defalutPara # changePara
5行目でパラメータ指定なしで関数起動すると、デフォルト引数の値となります。7行目でパラメータ値を指定して関数起動すると、引数で渡した値となります。
パラメータ全てに初期値を設定する場合(下記はパラメータ2つ)
def "関数名" (" パラメータ名 " = " デフォルト値 " , " パラメータ名 " = " デフォルト値 " ) : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 = "defalutPara1" , para2 = "defalutPara2"): print( para1 + ' , ' +para2) # defaultパラメータ設定を使用した場合 defaultParaTest() # defaultパラメータ値を変更した場合 defaultParaTest("changePara1" , "changPara2") # 一つだけdefaultパラメータを変更した場合 defaultParaTest("changePara1") # 出力結果 # defalutPara1 , defalutPara2 # changePara1 , changPara2 # changePara1 , defalutPara2
5行目でパラメータ指定なしで関数起動すると、デフォルト引数の値となります。
7行目で両方のパラメータ値を指定して関数起動すると、引数で渡した値となります。
9行目でパラメータ値を一つ指定すると、第一パラメータとなることがわかります。
パラメータ二番目だけに初期値を設定する場合(下記はパラメータ2つ)
def "関数名" (" パラメータ名 " , " パラメータ名 " = " デフォルト値 ") : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 , para2 = "defalutPara2"): print( para1 + ' , ' +para2) # 第一パラメータ設定、第二パラメータはデフォルト引数 defaultParaTest("changePara1") # 第一、第二パラメータ設定 defaultParaTest("changePara1","changePara2") # 出力結果 # changePara1 , defalutPara2 # changePara1 , changePara2
5行目で第一パラメータ指定で関数起動すると、第一パラメータが設定され、第二パラメータがデフォルト引数になります。
7行目で両方のパラメータ値を指定して関数起動すると、引数で渡した値となります。
当然ながらこの場合は、第一パラメータの指定は必須です。設定しないとエラーとなります。
デフォルト引数ができない記述
複数のパラメータのうち一番目だけ初期値を設定する場合
下記ケースでは正常に実行されず、エラーとなります。
def "関数名" ( " パラメータ名 " = " デフォルト値 " , " パラメータ名 " ) : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 = "defaultPara1" , para2): print( para1 + ' , ' +para2) # 出力結果 # SyntaxError: non-default argument follows default argument
複数のパラメータのうち一部だけ初期値を設定する場合
下記ケースは正常に実行されず、エラーとなります。
def "関数名" ( " パラメータ名 " = " デフォルト値 " , " パラメータ名 " , " パラメータ名 " ) : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 = "defaultPara1" , para2 , para3): print( para1 + ' , ' +para2 + ' , ' para3) # 出力結果 # SyntaxError: non-default argument follows default argument
複数のパラメータのうち一部だけ初期値を設定する場合
下記ケースは正常に実行されず、エラーとなります。
def "関数名" ( " パラメータ名 " = " デフォルト値 " , " パラメータ名 " , " パラメータ名 "= " デフォルト値 " ) : "関数で実行する処理"
・サンプルコード
def defaultParaTest( para1 = "defaultPara1" , para2 , para3 = "defaultPara3"): print( para1 + ' , ' +para2 + ' , ' para3) # 出力結果 # SyntaxError: non-default argument follows default argument