【Python】SyntaxError: non-default argument follows default argumentの解決方法

こんにちは、にわこまです。
今回は、pythonの関数において引数にデフォルト値を含めようとしたときに派生するエラーの解決方法を紹介しようと思います。
次のようなエラー文の解決方法を紹介します。
SyntaxError: non-default argument follows default argument
誤字脱字など何かございましたらご連絡お願いいたします。
スポンサードサーチ
結論
デフォルト値を代入する変数を後ろに持ってくる。
エラーが発生する関数の書き方を以下に示します。
def greet(who="みなさん", greeting):
print("{0}, {1}".format(who, greeting))
greet("こんにちは")
# 実行結果
File "non-default.py", line 1
def greet(who="みなさん", greeting):
^
SyntaxError: non-default argument follows default argument
上記の場合デフォルト値を代入する変数(who=”みなさん”)が、greetingの前にあるためエラーが発生します。
以下のように書き換えるとエラーは発生しません。
def greet(greeting, who='みなさん'):
print("{0}, {1}".format(who, greeting))
greet("こんにちは")
greet("こんにちは", "諸君")
# 実行結果
みなさん, こんにちは
諸君, こんにちは
上記のようにデフォルト値を後ろに持ってくるとエラーは発生しません。
まとめ

pythonで関数を作成している最中に、以下のようなエラーが出たら
SyntaxError: non-default argument follows default argument
デフォルト値を代入する変数を後ろに持ってくる。
具体的には、以下のような形にします。
def greet(greeting, who='みなさん'):
print("{0}, {1}".format(who, greeting))
最後までお読みいただきありがとうございます。
スポンサードサーチ