在Python中通过参数函数更新外部变量

在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

我有一个生成值的页面​​根据所选参数,此函数应更新也由参数传递的外部变量。但它不起作用

变量以相同的id输入,但在值​​生成并传递到此变量,它不会在外部更改

这是科吉多:

生成器.py

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