bugfix> python > 投稿

私はこのコードを書きます:

a=5
b=4
s=a*b
print(s)
20

次に、変数「a」を6に変更しました。

a=6
print(s)
20

私は変数「a」を変更しました print(a) それは新しい変数(6)を示していますが、私が言うとき print(s) 同じ番号を示しています(20) なぜこれが起こるのだろうか。 s = 24と表示されると思っていましたが、なぜ再び20と表示されるのでしょうか。

回答 3 件
  • これは非常に合理的な質問です。変わらない理由は s 取得します結果計算の a*b 、および実際の機能を表すものではありません a*b 。これはPythonの仕組みであり、他の言語とは異なる場合があります。

    君はできるラムダを使用して、必要なものと同様の何かを実現します。

    a=5
    b=4
    s=lambda: a*b
    print(s()) # prints 20
    a=6
    print(s()) # prints 24
    
    

    を使用してlamdbaを呼び出す必要があることに注意してください s()

  • sを変更するには、sを再度計算する必要があります。

    a=6
    s=a*b
    print(s)
    
    

  • 変更後 a=6 あなたは計算する必要があります s=a*b の新しい価値を考慮に入れるために再び a

あなたの答え