我有以下模块:
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模块中导入测试模块。
如何在不返回方法的值的情况下实现此目的? (一种参考传递)
答案 0 :(得分:3)
字符串是不可变的。你无法做你想做的事。将+=
与字符串一起使用将始终返回一个新字符串,该字符串与分配给var1
和var2
的任何内容无关。
实现接近你想要的东西的唯一方法(并且,老实说,你应该改变你的要求)是使用列表而不是单独的变量,并修改其内容:
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进行测试