2010-06-16 6 views
8

J'ai une question très rudimentaire.Python - sortie des fonctions?

On suppose que j'appelle une fonction, par exemple,

def foo(): 
    x = 'hello world' 

Comment puis-je obtenir la fonction de revenir x de telle sorte que je puisse l'utiliser comme entrée pour une autre fonction ou utiliser la variable dans le corps d'un programme? Lorsque j'utilise return et que j'appelle la variable dans une autre fonction, j'obtiens un NameError.

+5

Je vous recommande vraiment de lire le tutoriel python ici: http://docs.python.org/tutorial/index.html –

Répondre

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

vous avez oublié un cas pour "return x de telle manière que je puisse l'utiliser comme entrée pour une autre fonction "qui est la plus facile à faire comme ça" bar (foo()) ' –

+0

@Evan Plaice: Bon point, merci. J'ai édité ma réponse. –

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

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

Vous pouvez utiliser global déclaration et obtenir ce que vous voulez sans valeur de retour de la fonction . Par exemple, vous pouvez faire quelque chose comme ci-dessous:

Le code ci-dessus affichera "bonjour monde". Mais s'il vous plaît soyez averti que l'utilisation de "global" n'est pas une bonne idée du tout et il vaut mieux éviter l'utilisation qui est montrée dans mon exemple.

Vérifiez également cette discussion relative à propos de l'utilisation de l'instruction global en Python.

+2

Techniquement, c'est une solution à la question de Seafoid, mais pythoniquement, c'est le pire des cas (comme vous l'avez déjà souligné). –

Questions connexes