2010-06-16 70 views
8

我有一个非常基本的问题。Python - 从函数输出?

假设我调用一个函数,例如,

def foo(): 
    x = 'hello world' 

如何获得的功能以这样的方式,我可以用它作为输入其他功能或体内使用的变量返回X一个程序?

当我使用收益和其他功能我得到一个NameError中调用该变量。

+5

我真的推荐你在这里阅读python教程:http://docs.python.org/tutorial/index.html – 2010-06-16 12:09:53

回答

21
def foo(): 
    x = 'hello world' 
    return x # return 'hello world' would do, too 

foo() 
print x # NameError - x is not defined outside the function 

y = foo() 
print y # this works 

x = foo() 
print x # this also works, and it's a completely different x than that inside 
      # foo() 

z = bar(x) # of course, now you can use x as you want 

z = bar(foo()) # but you don't have to 
+1

你忘记了一个“return x的例子,以便我可以使用它作为输入另一个功能”,这是最容易做这样的酒吧(富())' – 2010-06-17 00:53:30

+0

@Evan鲽鱼:好一点,谢谢。我编辑了我的答案。 – 2010-06-17 05:17:43

3
>>> def foo(): 
    return 'hello world' 

>>> x = foo() 
>>> x 
'hello world' 
2

您可以使用global语句,然后实现你想要什么,而不从 函数返回值。例如,您可以执行以下操作:

def foo(): 
    global x 
    x = "hello world" 

foo() 
print x 

上述代码将打印出“hello world”。

但是请警告说,“全球性”的使用是根本不是一个好主意,这是更好地避免了在我的例子显示使用。

还要检查大约在Python global语句使用此相关的讨论。

+2

从技术上讲,这是Seafoid的问题的解决方案,但pythonically,这是最坏的情况,方案(因为你已经指出)。 – 2010-06-16 12:20:53