TypeError: 引数に複数の値があります 質問する

TypeError: 引数に複数の値があります 質問する

次のようなコードがあります:

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'
    

これはどういう意味ですか、どうすれば問題を解決できますか?

ベストアンサー1

これは、位置引数を上書きするキーワード引数が指定されたときに発生します。たとえば、色付きのボックスを描画する関数を想像してみましょう。関数は使用する色を選択し、ボックスの描画を別の関数に委任して、すべての追加引数を中継します。

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

そして電話

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

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

これは例では簡単に確認できますが、もちろん、呼び出し時に引数を混同すると、デバッグが容易ではなくなる可能性があります。

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

ここで、colorが割り当てられ20、その後args=[30]、 がcolor再び に割り当てられます"green"

おすすめ記事