在Python中通过参数函数更新外部变量
我有一个生成值的页面根据所选参数,此函数应更新也由参数传递的外部变量。但它不起作用 变量以相同的id输入,但在值生成并传递到此变量,它不会在外部更改 这是科吉多: 生成器.py在Python中通过参数函数更新外部变量,python,function,variables,updates,Python,Function,Variables,Updates,我有一个生成值的页面根据所选参数,此函数应更新也由参数传递的外部变量。但它不起作用 变量以相同的id输入,但在值生成并传递到此变量,它不会在外部更改 这是科吉多: 生成器.py import time def gera(value_start, value_end, value_step): while value_start <= value_end: yield value_start value_start += value_ste
import time
def gera(value_start, value_end, value_step):
while value_start <= value_end:
yield value_start
value_start += value_step
def update(current, new, var):
print "var:", var, " id(var):", id(var)
if (new >= current):
current = new
var = current
print "var:", var, " id(var):", id(var)
def run(value_start, value_end, value_step, var):
current = 0
print "id(var):", id(var)
for x in gera(value_start, value_end, value_step):
time.sleep(0.1)
update(current, x, var)
print "\n", x
print "id(var):", id(var)
print "var:", var
但是,x的值没有更改。
这是输出:
x= 30 id(x)= 37466652
X should come out with value 5
id(var): 37466652
var: 30 id(var): 37466652
var: 1 id(var): 37467000
1
var: 30 id(var): 37466652
var: 2 id(var): 37466988
2
var: 30 id(var): 37466652
var: 3 id(var): 37466976
3
var: 30 id(var): 37466652
var: 4 id(var): 37466964
4
var: 30 id(var): 37466652
var: 5 id(var): 37466952
5
id(var): 37466652
var: 30
30
看起来ID保持不变,但在函数之外,因为当它出现时,具有不同的ID。
值应该以5结尾,以30结尾
正如我对这个程序所做的那样,使用参数X的变量,其值在函数中发生变化
谢谢你。我不明白这些ID应该向你显示什么,但问题是你的更新功能什么也不做。交换该函数中的值所做的只是将它们分配给该函数中的新本地名称;它不会以任何方式影响分配给其他任何地方的名称的值。整数在Python中是不可变的……实际上这是我的问题。外部没有任何变化。它应该做的是更新小部件中现有标签的值。当生成器创建值时,此小部件的标签应显示这些值,但它们不显示。正确的方法是什么?
x= 30 id(x)= 37466652
X should come out with value 5
id(var): 37466652
var: 30 id(var): 37466652
var: 1 id(var): 37467000
1
var: 30 id(var): 37466652
var: 2 id(var): 37466988
2
var: 30 id(var): 37466652
var: 3 id(var): 37466976
3
var: 30 id(var): 37466652
var: 4 id(var): 37466964
4
var: 30 id(var): 37466652
var: 5 id(var): 37466952
5
id(var): 37466652
var: 30
30