如何在其他模块中更改变量值?

时间:2016-09-06 08:26:35

标签: python

我有以下模块:

test.py

import test1


var1 = 'Test1'
var2 = 'Test2'

print var1
print var2

test1.modify_vars(var1, var2)

print var1
print var2

和模块

test1.py

def modify_vars(var1, var2):
    var1 += '_changed'
    var2 += '_changed'

我希望得到以下输出:

Test1
Test2
Test1_changed
Test2_changed

我会得到:

Test1
Test2
Test1 
Test2

必须避免在test1模块中导入测试模块。

如何在不返回方法的值的情况下实现此目的? (一种参考传递)

2 个答案:

答案 0 :(得分:3)

字符串是不可变的。你无法做你想做的事。将+=与字符串一起使用将始终返回一个新字符串,该字符串与分配给var1var2的任何内容无关。

实现接近你想要的东西的唯一方法(并且,老实说,你应该改变你的要求)是使用列表而不是单独的变量,并修改其内容:

var = ['Test1', 'Test2']
...

def modify_var(var):
    var[0] += '_changed'
    var[1] += '_changed'

答案 1 :(得分:-1)

您的功能错过了返回值

var1 = 'Test1'
var2 = 'Test2'

def modify_var(var1, var2):
    var1 += '_changed'
    var2 += '_changed'
    return (var1,var2)


(var1,var2) = modify_var(var1,var2)
print var1,var2

有效吗?

我认为这需要对代码进行最少的更改。

使用python 2.7进行测试