访问main中定义的变量

时间:2012-12-31 04:25:48

标签: python python-2.7

我需要一些关于访问func2中main中定义的var1的最佳方法的输入,程序流程如下所示。请指教

func2():

 #need to access var1 in func2


func1():

   func2()

def main():

  var1
  func1()

2 个答案:

答案 0 :(得分:2)

您需要在两个函数中将变量标记为global

def func2():
    global var1
    print var1

    var1 = "World"

def func1():
    func2()

def main():
    global var1
    var1 = "Hello"
    func1()

    print var1

输出:

Hello
World

随着问题的回答,有更好的方法可以解决这个问题。

  • 如果您只需读取 func2中的变量,则将其作为参数传递,如Joran Beasley's answer所示。

  • 如果您需要从func2获取值,则返回值更有意义。

  • 如果您必须在整个地方读/写变量,您应该重新考虑您的设计。或者,考虑将函数包装在class中,并使其成为成员变量。

答案 1 :(得分:1)

我建议使用参数而不是全局...但要么应该工作

def func2(value=None):
 print value
 #need to access var1 in func2


def func1(var_val=None):

   func2(var_val)

def main():

  var1 = "hello";
  func1(var1)

或类级静态变量

class config:
   var1=None

def func2(value=None):
 print config.var1
 #need to access var1 in func2


def func1():

   func2()

def main():

  config.var1 = "hello";
  func1()