2010-06-16 17 views
8

Tengo una pregunta muy rudimentaria.Python: ¿salida de funciones?

asume que llama a una función, por ejemplo,

def foo(): 
    x = 'hello world' 

¿Cómo consigo que la función devuelva x de tal manera que pueda usarlo como entrada para otra función o utilizar la variable dentro del cuerpo de un programa?

Cuando uso return y llamo a la variable dentro de otras funciones obtengo un NameError.

+5

Realmente recomiendo que lea el tutorial de Python aquí: http://docs.python.org/tutorial/index.html –

Respuesta

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

olvidó un caso para "devolver x de tal manera que pueda usarlo como entrada para otra función "lo que es más fácil de hacer como esto" bar (foo()) ' –

+0

@eva Plaice: Buen punto, gracias. He editado mi respuesta. –

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

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

Puede utilizar global declaración y luego lograr lo que quiere sin devolver el valor de la función . Por ejemplo, puede hacer lo siguiente:

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

foo() 
print x 

El código anterior imprimirá "hello world".

Pero tenga en cuenta que el uso de "global" no es una buena idea en absoluto y es mejor evitar el uso que se muestra en mi ejemplo.

Consulte también esta discusión relacionada sobre el uso de la declaración global en Python.

+2

Técnicamente, esta es una solución a la pregunta de Seafoid, pero pitónicamente, es el peor de los casos (como ya lo señaló). –