次のようなコードがあります:
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
を受け入れることになっています)。height
width
これは例では簡単に確認できますが、もちろん、呼び出し時に引数を混同すると、デバッグが容易ではなくなる可能性があります。
# misplaced height and width
color_box(20, 30, color="green")
ここで、color
が割り当てられ20
、その後args=[30]
、 がcolor
再び に割り当てられます"green"
。