`return None` dans python n'est pas recommandé. Comment contourner?
J'ai une fonction qui se connecte à une url par httplib
à l'aide de lxml
. Il vérifie par xpath
pour un certain modèle et si la vérification est positive, elle renvoie une chaîne de caractères. Mais si la vérification est négative, il ne retourne rien.
Maintenant, la situation est, que ma fonction renvoie None
. J'appelle la fonction, de vérifier si sa valeur de retour est not None
et continuer dans le code.
Un exemple:
def foobar(arg):
# connect to page by httplib
# check for arg in a certain pattern by lxml
if check:
return result
else:
return None
result = foobar(arg)
if result:
# do stuff
else:
# do other stuff
Récemment, j'ai lu, que c'est un pas aller. Comment puis-je éviter de telles situations?
source d'informationauteur Aufwind
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de mal avec le retour de
None
.Dans la plupart des cas, vous n'avez pas besoin de renvoyer explicitement
None
. Python va le faire pour vous. Ceci est une version modifiée de votrefoobar
qui se comportent de manière identique, sans explicitement le retourNone
:Encore, même si Python renvoie implicitement
None
il y a une valeur explicite; Votre code devient plus facile à lire et à comprendre. C'est une constante compromis pour qui il n'y a pas de réponse générale.Cela dépend de pourquoi c'est un "no go"; je n'ai pas entendu parler. Si c'est juste de la mauvaise forme, omettez le "return None" (le else) tout à fait, et il sera de retour nul par défaut. Si il est mal à retourner Aucun, retour 0 ou " (chaîne vide) ou False à la place, en fonction du type prévu par l'appelant.
Il existe de nombreux styles de traiter cette question, y compris à l'aide d'exceptions ou juste retour de ce que vous obtenez, y compris une chaîne vide. C'est bien aussi: