0

変数が不変であるかどうかが常に明確であるとは限らないため、関数を作成するときに引数を他の変数にコピーすることをお勧めします。[場所を覚えていないので聞かないでください]。これに従って関数を書いています。

私が理解しているように、新しい変数を作成するにはオーバーヘッドがかかります。小さいかもしれませんが、そこにあります。では、何をすべきでしょうか?新しい変数を作成する必要がありますか、それとも引数を保持しない必要がありますか?

私はこれこれを読みました。float と int がこれほど簡単に変更できるのに、なぜ不変なのかについて混乱していますか?

編集:

私は単純な関数を書いています。例を掲載します。最初のものは、Python では引数をコピーする必要があることを読んだ後に書き、2 つ目は試行錯誤の結果、それが不要であることに気付いたときに書きました。

#When I copied arguments into another variable
def zeros_in_fact(num):
    '''Returns the number of zeros at the end of factorial of num'''
    temp = num
    if temp < 0:
        return 0
    fives = 0
    while temp:
        temp /=  5
        fives += temp
    return fives

#When I did not copy arguments into another variable
def zeros_in_fact(num):
    '''Returns the number of zeros at the end of factorial of num'''
    if num < 0:
        return 0
    fives = 0
    while num:
        num /=  5
        fives += num
    return fives
4

3 に答える 3

1

名前を再バインドする場合、含まれるオブジェクトの可変性は関係ありません。変更操作を実行する場合にのみ、コピーを作成する必要があります。(そして、行間を読むと、間接的に「渡されたオブジェクトを変更しないでください」と言っています。)

于 2013-06-18T06:16:07.647 に答える