5

重複の可能性:
Python: 変数を参照渡しするにはどうすればよいですか?

渡されたパラメーターの 1 つを変更する関数を作成しようとしています。現在のコードは次のとおりです。

def improve_guess(guess, num): 
  return (guess + (num/guess)) / 2

x = 4.0
guess = 2.0
guess = improve_guess(guess, x)

ただし、最終的な割り当てを行う必要がないような方法でコードを記述したいと考えています。そうすれば、次のように呼び出すことができます。

improve_guess(guess,x) 

推測で新しい値を取得します。

(参照渡しについては意図的に言及しませんでした。なぜなら、ネット検索中に、このトピックに関する多くの学術的な議論が見つかりましたが、これを行うためのクリーンな方法が見つからなかったからです。このためのリスト。)

4

2 に答える 2

7

Python では整数型と浮動小数点型は不変であるため、これを直接行うことはできません。

ある種の変更可能な構造 (リストやカスタム クラスなど) にラップすることもできguessますが、それはすぐに見苦しくなってしまいます。

guess = improve_guess(guess, x)PS私は個人的に、正確に何が変更されているかについて疑いの余地がないので、の明示的な性質が本当に好きです。私はそれを理解するために何も知る必要さえありませんimprove_guess()

于 2012-12-04T14:34:27.347 に答える
3

しかし、それを行うには、グローバルを使用するか、リストのような可変型を使用するかの 2 つの方法しかありません。Python では可変でない変数を変更することはできません。変更すると、ローカル名が新しい値に再バインドされるだけです。

リストでラップするのが本当に気に入らない場合は、独自のクラスを作成して、変更可能なインスタンスを渡すことができますが、それを行うメリットはありません。

于 2012-12-04T14:34:12.560 に答える