2011-03-10 68 views
1

我想做一个函数内部打印变量以下的蟒蛇:Python入门:从另一个函数

def func1(): 
var1 = "something" 

def func2(): 
print var1 

什么是正确的方式做到这一点?我还没有在文档中找到

PS。如果可能的话,我不打算让'var1'成为一个全局变量。

谢谢。

回答

5

我假设您不希望将该变量作为函数调用之间的参数传递。在函数之间共享状态的正常方式是定义一个类。这可能是你的具体问题矫枉过正,但它可以让你有共同的状态,控制住:

class C: 
    def func1(self): 
    self.var1 = "something" 

    def func2(self): 
    print self.var1 

foo = C() 
foo.func1() 
foo.func2() 
+0

感谢您的回答! – 2011-03-10 16:36:08

+0

现在它适用于我...我创建了一个像你写的类,我可以“看到”并使用该变量! – 2011-03-10 16:41:45

0

那么你的func2()试图在另一个函数的范围内打印一个变量。您可以

  • 返回调用FUNC1当VAR1的值(例如高清FUNC2():打印FUNC1()}从FUNC1
  • 呼叫FUNC2并通过VAR1值
3

无,这是不可能做这样的事情,这是因为一种叫“scope”,你可以创建一个模块级变量或将其放置在一个面向对象的结构。

+1

你没有确定范围。词汇范围禁止这一点。动态*范围*是关于这一点(使呼叫者的本地人可用于被调用者)。 – delnan 2011-03-10 16:22:44

+0

感谢您的回答! – 2011-03-10 16:36:24

0

你可以尝试像

def func1(): 
    var1 = "something" 
    return var1 

def func2(): 
    print func1() 

如果您需要func1来做更多的事情而不仅仅是定义var1,那么您可能需要的是定义一个类并创建对象?请参阅http://docs.python.org/tutorial/classes.html

+0

感谢您的回答! – 2011-03-10 16:39:56

0

你可以尝试:

filename.py:


def func1(): 
    var1 = "something" 

def func2(): 
    var = __ import__('filename').var1 
    print var 
相关问题