[Python] Qui doit être utilisé, renvoyer ou renvoyer Aucun

Dois-je utiliser return None ou return si je veux terminer le traitement de la fonction avec l'instruction return?

Lorsque j'écrivais une fonction Python, je me suis soudainement demandé.

La question est de savoir si vous devez écrire «return» ou «return None» si vous souhaitez terminer le processus au milieu de la fonction.

Puisqu'il est recommandé d'écrire explicitement en Python, je me demandais si je devais écrire «return None» à la fois en terminant le processus avec l'instruction return et en renvoyant «None». (* En Python, si seul return est écrit dans la définition de la fonction, ou s'il n'y a pas de description de return, None sera retourné. Référence: [Python] Valeur retournée par la fonction qui n'a pas décrit return. )

De la conclusion, il semble que ** return` est meilleur ** lorsque vous voulez juste terminer la fonction. Cependant, il semble y avoir certaines choses à prendre en compte lorsque vous n'écrivez que «return».

Laisse moi te donner un exemple

return, return None, et aucun retour du tout? a été utile. Laissez-moi vous expliquer avec un exemple.

Utilisez return None

def hello_all():
    persons = ['Zepp', 'Eric']

    if persons:
        for person in persons:
             print('Hello ' + person)
    #Renvoie None si la liste est vide
    else:
        return None

Utilisez return

Si vous voulez utiliser la valeur de retour None, vous avez explicitement écrit return None, mais si vous voulez terminer la fonction au lieu d'utiliser la valeur de retour, vous pouvez utiliser return. Le code ci-dessous est utilisé pour quitter la boucle for et terminer la fonction.

def hello_zepp():

    persons = ['Zepp', 'Eric']

    for person in persons:
        print('Hello ' + person)
        #Terminer le traitement
        return

En d'autres termes, lorsque ** for loop est unique, cela fonctionne de la même manière que break **.

Si vous souhaitez terminer le processus dans une boucle for imbriquée dans plusieurs boucles for, contrairement à break, vous pouvez terminer la fonction en écrivant un seul return, ce qui simplifie le code.

Lorsque vous utilisez return de cette manière, utilisez-le lorsque vous voulez forcer la fin du processus au milieu de la fonction, comme lorsque vous quittez la boucle.

: no_good: Soyez prudent

Dans ce cas, la valeur de retour «Aucun» n'est pas censée être utilisée, vous ne devez donc pas affecter la valeur de retour à une variable.

#↓ ne doit pas être fait
result = hello_zepp()

De plus, si vous souhaitez terminer la fonction au milieu, vous souhaiterez peut-être interrompre le processus car les conditions ne sont pas remplies. Dans un tel cas, il est préférable de créer une classe d'exception appropriée, de lever une exception et de gérer l'exception au niveau de l'appelant, plutôt que d'utiliser return.

Pas de description de «retour»

Les fonctions Python ne nécessitent pas nécessairement une instruction return, mais même s'il n'y a pas d'instruction return, «None» est retourné comme valeur de retour.

#Il n'y a pas d'instruction return, mais None est retourné comme valeur de retour
def hello_eric():

    persons = ['Zepp', 'Eric']
        print('Hello ' + persons[1])

Dans ce cas également, comme dans le cas de «return None», ce «None» n'est pas censé être utilisé, donc n'affectez pas la valeur de retour à une variable.

Conclusion

Recommended Posts

[Python] Qui doit être utilisé, renvoyer ou renvoyer Aucun
Lequel dois-je étudier, R ou Python, pour l'analyse des données?
Quel est le meilleur, PyPy ou Python?
[Python] renvoie A [ou / et] B
33 chaînes à ne pas utiliser comme noms de variables en python
Qu'est-ce qui est le plus rapide, le mélange Python ou l'échantillon?
++ et-ne peuvent pas être utilisés pour incrémenter / décrémenter en python
Retour anticipé de Python
Remarque Python: lorsque la commande pip ne peut pas être utilisée
[Python] L'opérateur booléen (ou / et) ne renvoie pas de valeur booléenne
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Notes sur les connaissances Python utilisables avec AtCoder
[Mémorandum] Les clés japonaises ne peuvent pas être utilisées dans la chaîne de python.
compréhension de liste car operator.methodcaller ne peut pas être utilisé avec python 2.5
Operators ++, - ne peut pas être utilisé en python (différence de php)
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
Différence entre return, return None et no return description en Python
python> vérifier NoneType ou non> si a == None:> si a vaut None:
Quel est le meilleur, l'entrée standard de python recevant input () ou sys.stdin?
[Redash] La bibliothèque standard ne peut pas être utilisée dans la fonction python