0
def CreateText(win, text, x, y, size, font, color, style):
    txtObject = Text(Point(x,y), text)
    if size==None:
        txtObject.setSize(12)
    else:
        txtObject.setSize(size)

    if font==None:
        txtObject.setFace("courier")
    else:
        txtObject.setFace(font)

    if color==None:
        txtObject.setTextColor("black")
    else:
        txtObject.setTextColor(color)

    if style==None:
        txtObject.setStyle("normal")
    else:
        txtObject.setStyle(style)

    return txtObject

def FlashingIntro(win, numTimes):
    txtIntro = CreateText(win, "CELSIUS CONVERTER!", 5,5,28)
    for i in range(numTimes):
        txtIntro.draw(win)
        sleep(.5)
        txtIntro.undraw()
        sleep(.5)

CreateTextパラメータが使用されていない場合、「デフォルト」値でテキストオブジェクトを作成する関数を取得しようとしています。フォールバック テキストを 12pt の黒のクーリエにしたい。""代わりに空白の文字列で試してみましたがNone、うまくいきませんでした。私はPythonの初心者で、プログラミングの知識はほとんどありません。

4

4 に答える 4

2

Python では、引数/キーワードのデフォルト値を関数シグネチャに直接入れます。つまり、次のようになります。

def CreateText(win, text, x, y, size=12, font="courier", color="black", style="normal"):
    #do stuff

デフォルト値を None、つまり に設定できますsize=None。これが役立つ場合もありますが、この場合は必要ありません。デフォルト値のない引数が必要であり、それらが呼び出し時に存在しない場合、(先ほど見たように) エラーが発生します。

アップデート:

@agf が指摘したように、関数がそれらを変更または返す場合、変更可能なデフォルトをシグネチャに設定しないでください。この場合、 を使用することをお勧めしますargument=None

于 2012-04-12T05:07:47.327 に答える
1

引数のデフォルト値を指定する必要があります。

def CreateText(win, text, x, y, size=None, font=None, color=None, style=None):

ifまたは、実際のデフォルトを入れて、ステートメントが不要になるようにします。

def CreateText(win, text, x, y, 
                         size=12, font="courier", color="black", style="normal"):

    txtObject = Text(Point(x,y), text)
    txtObject.setSize(size)
    txtObject.setFace(font)
    txtObject.setTextColor(color)
    txtObject.setStyle(style)

    return txtObject
于 2012-04-12T05:06:10.323 に答える
0

パラメータが使用されていない場合、CreateText関数を使用して「デフォルト」値でテキストオブジェクトを作成しようとしています。

エラーは、問題が何であるかを正確に示しています。関数の内容を変更して、関数を呼び出す正しい方法 (現在: 8 つの引数) を変更することはできません。def関数へのインターフェイス (つまり行)を変更する必要があります。関数の引数は、デフォルト値を指定した場合にのみデフォルト値を持ちます。

于 2012-04-12T05:25:59.840 に答える
0

関数定義でデフォルトを設定します。

def CreateText(win, text, x, y, size=None, font=None, color=None, style=None):

また、Python では、次のようなシングルトン オブジェクトをテストするのが最善ですNone

if size is None:

等...

于 2012-04-12T05:06:12.083 に答える