Mi chiedo come posso scrivere una funzione generatore che ha anche la possibilità di restituire un valore. In Python 2, si ottiene il seguente messaggio di errore se una funzione generatore tenta di restituire un valore. SyntaxError: "return" with argument inside generator
È possibile scrivere una funzione dove specifichi se voglio ricevere un generatore o no?
Per esempio:
def f(generator=False):
if generator:
yield 3
else:
return 3
risposte:
4 per risposta № 1Lettura obbligatoria: Capire i generatori in Python
Informazione chiave:
yield
ovunque in una funzione lo rende un generatore.
La funzione è contrassegnata come generatore quando viene analizzato il codice. Pertanto, è impossibile commutare il comportamento della funzione (generatore / non generatore) in base all'argomento passato in runtime.