2010-06-16 14 views
8

Ho una domanda molto rudimentale.Python - uscita dalle funzioni?

Si supponga che io chiamo una funzione, ad esempio,

def foo(): 
    x = 'hello world' 

Come faccio ad avere la funzione di restituire x in modo tale che posso usarlo come input per un'altra funzione o utilizzare la variabile all'interno del corpo di un programma?

Quando uso restituire e chiamare la variabile all'interno di un'altra funzione, ottengo un errore NameError.

+5

Mi raccomando davvero di leggere il tutorial Python qui: http://docs.python.org/tutorial/index.html –

risposta

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

hai dimenticato un caso per "return x in modo tale che io possa usarlo come input per un'altra funzione "che è più facile da fare come questa 'bar (foo())' –

+0

@Evan Plaice: buon punto, grazie. Ho modificato la mia risposta. –

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

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

È possibile utilizzare global dichiarazione e quindi ottenere quello che vuoi senza restituire valore dalla funzione. Ad esempio puoi fare qualcosa di seguito:

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

foo() 
print x 

Il codice sopra verrà stampato "ciao mondo".

Ma si prega di essere avvertiti che l'utilizzo di "globale" non è affatto una buona idea ed è meglio evitare l'uso che viene mostrato nel mio esempio.

Controllare anche questa discussione correlata sull'utilizzo dell'istruzione global in Python.

+2

Tecnicamente, questa è una soluzione alla domanda di Seafoid, ma pitonicamente, è lo scenario peggiore (come hai già sottolineato). –

Problemi correlati