1. ホーム
  2. スクリプト・コラム
  3. パイソン

[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く

2022-01-12 11:34:30

質問

コードは次のとおりです。

from os import system
def a(len1,hgt=len1,til,col=0):
    system('mode con cols='+len1,'lines='+hgt)
    system('title',til)
    system('color',col)

a(64,25,"hi","0b")
input()

実行しようとすると、エラーが発生します。

SyntaxError: non-default argument follows default argument

解決方法は?

ここで、2つの点を明らかにしておきます。

  • まず、非デフォルトの引数はデフォルトの引数の後に続いてはいけません。 (a = 'b',c) を関数内で使用することができます。関数内でパラメータを定義する正しい順序は、:
  • 位置決めパラメータまたはデフォルト以外のパラメータ、すなわち (a,b,c)
  • キーワードパラメータまたはデフォルトパラメータ、例 (a = 'b',r= 'j')
  • キーワードのみのパラメータ (*args)
  • var-keyword パラメータ 例 (**kwargs)

def example(a, b, c=None, r="w" , d=[], *ae, **ab):

(a,b) は位置決めパラメータ

(c=none) はオプションのパラメータです。

(r="w") はキーワードパラメータ

(d=[]) はリストパラメータ

(*ae) はキーワードのみ

(*ab) は、var-keyword パラメータです。

というわけで、まずはパラメータを並べ替えてみましょう。

  • hgt=len1 を実行するときに len1 を定義する必要があります。len1 引数は、デフォルト値が保存されるときには定義されていません。

で、2つ目はこれを削除します。 "len1 = hgt" Pythonで許可されていないのです。

引数とパラメータの違いに注意してください。