• # Moult remarques

    Posté par (site web personnel) . En réponse au message Python: Return value not found in function. Évalué à 9.

    Voici quelques retour sur ton code pour faire du code plus idiomatique (et donc plus court, lisible, simple et facile à débugger) :

    • Tu respectes PEP8 plutôt bien, mais dans les listes arguments (et les listes, les dictionnaires...) il faut un espace après les virgules.

    • Évite les index quand un itérateur fait le boulot:

     for j in range(len(history)):
     if (message["email"] in history[j]):
     ...

    deviendrait:

     for history_info in history:
     if message["email"] in history_info:
     ...
    • Les tests de listes/dictionnaires/tuples... vides peuvent être écrits de manière plus courte et performante:
     if order_info != {}:
     ...

    s'écrit plutôt :

     if order_info:
     ...
    • Utilise with pour la gestion des fichiers (c'est plus court et le fichier est fermé même en cas d'erreur)
     file = open(..., "w")
     file.write(cont)
     file.close()

    gagne à être écrit :

     with open(..., "w") as f:
     f.write(cont)
    • Pour les chemins de fichier utilise par exemple os.path.join() qui mettra le bon séparateur suivant la plateforme.

    • Les list comprehension c'est la vie:

     lst = []
     for lst3 in history:
     lst.append(",".join(lst3))
     cont = "\n".join(lst)

    peut s'écrire :

     lst = [",".join(h) for h in history]
     cont = "\n".join(lst)

    Qu'on simplifie alors en :

     cont = "\n".join([",".join(h) for h in history])

    Et avec la magie des generator expressions ça peut même être encore plus joli (les [] disparaissent):

     cont = "\n".join(",".join(h) for h in history)
    • Peu de chances que l'utilisation de eval() soit une bonne idée (surtout quand on manipule des données externes).

    Bon courage pour la suite !