-2

私は単純なプログラムを持っていますが、出力がまだ0である理由がよくわかりません。

x=0
def main():     
    getX(1,2,x)
    print(x)

def getX(v1,v2,x):
    if (v1>v2):
        v1=x
    else:
        v2=x
main()
4

1 に答える 1

2

ここでの主な問題は、getXまったく何もしないということです。v1またはに値を割り当てるだけですv2。どちらもローカル値であり、関数が終了すると破棄されます。

あなたがおそらく欲しかったのはこれでした:

def getX(v1, v2):
    if v1 > v2:
        return v1
    else:
        return v2

x = getX(1, 2)
print(x)

return関数の結果として値を与え、それを他の場所で使用できます。x関数ではまったく使用されないため、最初に設定したり、関数に渡したりする必要はありません。

これは、関数内の割り当てを変更し、を使用して最初に定義global xしたモジュールレベルにアクセスすることで解決できることにも注意してください。xグローバルを変更するコードに従うのは一般的に難しいため、これは悪い習慣です。

于 2012-12-16T22:44:09.847 に答える