相关疑难解决方法(0)

如何通过引用传递变量?

Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'

class PassByReference:
    def __init__(self):
        self.variable = 'Original'
        self.change(self.variable)
        print(self.variable)

    def change(self, var):
        var = 'Changed'
Run Code Online (Sandbox Code Playgroud)

有什么我可以通过实际参考传递变量吗?

python reference parameter-passing pass-by-reference

2480
推荐指数
22
解决办法
124万
查看次数

从 for 循环内更新外部作用域变量值的最佳方法?

这个问题与我之前的问题相关:python update external passed value from inside 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";
Run Code Online (Sandbox Code Playgroud)

我知道在Python中这是不可能的,因为变量是按值导入的而不是按引用导入的,到目前为止我在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
Run Code Online (Sandbox Code Playgroud)

虽然不理想,但如果我可以从 for 循环内调用函数“changeValue”,而不是像上面那样单独调用它们,那就可以了,但随后我又回到原来的“无法通过引用传递变量”问题。

我确信一定有一种简单且不太复杂的 Pythonic 方法来实现我所追求的目标?

python perl scope for-loop reference

3
推荐指数
1
解决办法
1368
查看次数