この質問は、私の以前の質問に関連しています: python update outer passed value from within a for loop .
Perl のバックグラウンドから来て、参照によって変数を渡し、以下の for ループの例のように子スコープ内から値を更新することは決して問題ではありませんでした:
#!/usr/bin/perl
my ($str1,$str2) = ('before','before');
print "before - str1:'$str1', str2:'$str2'\n";
foreach my $str($str1,$str2){$str = 'after'}
print "after - str1:'$str1', str2:'$str2'\n";
Python では、変数はby-referenceではなくby-valueとしてインポートされるため、これは不可能であることを理解しています。これまでに Python 内で見つけた唯一の解決策は、まさに私が必要としているものを実現するものです。
def changeValue(str):
return 'after'
str1 = 'before'
str2 = 'before'
for s in str1,str2: print s
str1 = changeValue(str1)
str2 = changeValue(str2)
for s in str1,str2: print s
理想的ではありませんが、関数「changeValue」を上記のように個別に呼び出すのではなく、for ループ内から呼び出すことができれば問題ありませんが、元の「参照によって変数を渡すことはできません」に戻ります。問題。
私が求めているものを達成するためのシンプルで複雑でない Pythonic の方法が必要だと確信していますか?