【问题标题】:Global variables referencing in pythonpython中的全局变量引用
【发布时间】:2016-02-29 18:31:42
【问题描述】:

我正在尝试使用 python 函数编写程序。在一个函数中使用的变量将在其他各种函数中需要。

我在第一个函数中将其声明为全局,然后在第二个函数中使用返回值。但是在第三个函数中,我想使用第二个函数的更新值,但我只能从第一个函数中获取值。

def func():
    global val, val2
    val = 3
    val2 = 4
    return val, val2

def func1(val, val2):
    val = val + 1 
    val2 = val2 + 1
    return val, val2

def func2(val,val2):
    val = val + 1
    val2 = val2 + 1
    print val, val2

func()
func1(val, val2)
func2(val, val2)

我想得到5,6 作为答案,但我得到的是4,5

【问题讨论】:

  • 你混合了全局变量和本地变量。当您将变量传递给函数时,该变量是局部变量。删除函数参数并将全局 val、val2 添加到所有函数的开头。

标签: python python-2.7 scope global-variables


【解决方案1】:

将函数的返回值分配给valval2

val, val2 = func()
val, val2 = func1(val, val2)
func2(val, val2)

【讨论】:

    【解决方案2】:

    如果变量被声明为函数参数,则它是该函数的局部变量。在您的情况下,如果您声明def func1(val,val2):,那么val,val2 在函数func1 中都将是本地的。如果您想使用全局变量,请这样做:

    def func():
        global val,val2
        val=3
        val2=4
        return val,val2
    def func1():
        global val,val2
        val=val+1
        val2=val2+1
        return val,val2
    def func2():
        global val,val2
        val=val+1
        val2=val2+1
        print val,val2
    func()
    func1()
    func2()
    

    返回:

    5 6
    

    但我认为如果没有必要使用全局变量,应该避免使用它们(检查Why are global variables evil?)。考虑以正确的方式使用return,就像在 pp_ 的回答中一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多