Disons que j'ai deux fonctions:
def foo():
return 'foo'
def bar():
yield 'bar'
La première est une fonction normale, et la seconde est une fonction de générateur. Maintenant, je veux écrire quelque chose comme ceci:
def run(func):
if is_generator_function(func):
gen = func()
gen.next()
#... run the generator ...
else:
func()
Ce sera une simple mise en œuvre d' is_generator_function()
ressemble? À l'aide de l' types
forfait je peux tester si gen
est un générateur, mais je veux le faire avant d'invoquer func()
.
Maintenant, considérons le cas suivant:
def goo():
if False:
yield
else:
return
Une invocation de l' goo()
sera de retour d'un générateur. Je présume que le python analyseur sait que l' goo()
de la fonction yield, et je me demande s'il est possible d'obtenir cette information facilement.
Merci!