4

Pascal にはvarパラメーターがあり、関数はパラメーター値を新しい値に変更できます。

procedure a(var S1, S2: string);
begin
  S1:= S1+'test'+S1;
  S2:= S1+'('+S2+')';
end;

Pythonにはそのような機能がありますか? stringメソッド内のパラメーターを変更できますか、それともreturn後で変数を使用して割り当てる必要がありますか?

4

4 に答える 4

5

Python は複数の値を (タプルの形式で) 返すことができるため、参照によって値を渡す必要がなくなります。

単純なサンプル ケースでは、同じ手法を適用できたとしても、Python 文字列は可変ではないため、同じ結果を得ることができませんでした。

そのため、単純な例は次のように Python に変換できます。

def a(s1, s2):
    s1 = '{0}test{0}'.format(s1)
    s2 = '{}({})'.format(s1, s2)
    return s1, s2

foo, bar = a(foo, bar)

別の方法として、変更可能なオブジェクト (辞書、リストなど) を渡し、その内容を変更します。

于 2013-07-15T10:55:37.107 に答える
4

これは「参照渡し」と呼ばれ、いいえ、Python はそれを行いません (ただし、変更可能なオブジェクトを値渡しして関数内で変更すると、同じオブジェクトであるため、どこでも変更されます)。

于 2013-07-15T10:55:56.917 に答える
1

Python では別の方法で行う方がよい場合があります。他の回答を参照してください。

参照によって何かを渡す必要がある場合、簡単な方法は、要素を 1 つだけ含むリストを渡して、関数を変更させることlistarg[0]です。

于 2013-07-15T11:31:18.983 に答える