1. ホーム
  2. python

[解決済み] TypeError: 引数に複数の値が指定されました。

2022-02-02 06:26:49

質問

このエラーに関係する他のスレッドを読みましたが、私の問題は、これまでに読んだすべての投稿とは興味深い明確な違いがあるようです。つまり、これまでの他の投稿はすべて、ユーザーが作成したクラスまたは組み込みのシステムリソースに関してエラーを起こしています。私は関数を呼び出すときにこの問題を経験していますが、それが何のためなのかわかりません。何かアイデアはありますか?

BOX_LENGTH = 100
turtle.speed(0)
fill = 0
for i in range(8):
    fill += 1
    if fill % 2 == 0:
        Horizontol_drawbox(BOX_LENGTH, fillBox = False)
    else:
        Horizontol_drawbox(BOX_LENGTH, fillBox = True)

    for i in range(8):
        fill += 1
        if fill % 2 == 0:
            Vertical_drawbox(BOX_LENGTH,fillBox = False)
        else:
            Vertical_drawbox(BOX_LENGTH,fillBox = True)

エラーメッセージを表示します。

    Horizontol_drawbox(BOX_LENGTH, fillBox = True)
TypeError: Horizontol_drawbox() got multiple values for argument 'fillBox'

解決方法は?

これは、位置引数を上書きするようなキーワード引数を指定した場合に起こります。例えば、色のついた箱を描く関数を想像してみましょう。この関数は、使用する色を選択し、ボックスの描画を別の関数に委ね、余分な引数をすべてリレーします。

def color_box(color, *args, **kwargs):
    painter.select_color(color)
    painter.draw_box(*args, **kwargs)

次に、呼び出し

color_box("blellow", color="green", height=20, width=30)

には2つの値が割り当てられているため、失敗します。 color : "blellow" を位置指定として、そして "green" をキーワードとして使用します。( painter.draw_box を受け入れることになっています。 heightwidth の引数)。

これは例で見るとわかりやすいのですが、もちろん呼び出し時に引数を取り違えると、デバッグは容易ではないかもしれません。

# misplaced height and width
color_box(20, 30, color="green")

ここです。 color が割り当てられています。 20 であれば args=[30]color が再び割り当てられます。 "green" .