[Python3] Pep8 et liste de compréhension
#1

Bonjour,

Comment je peux écrire une liste en compréhension afin que pep8 ne se plaigne pas :

Citation :E501 line too long (106 > 79 characters)

Voici la ligne correspondante :

Code :
                return [l.strip('\n') for l in list(rfile) if not l.startswith(('#', ';', '//', 'Start'))]

de fait de son placement il y a 16 espaces !

le bloc de code correspond est :

Code :
    def openFile(self, filename):
        ''' Return lines to list '''
       
        if os.path.isfile(filename):
            with open(filename, 'r') as rfile:
                return [l.strip('\n') for l in list(rfile) if not l.startswith(('#', ';', '//', 'Start'))]

Je n'arrive pas à comprendre où je peux placer le caractère d'échappement \  ou comment faire pour que ma ligne soit plus courte tout en faisant en sorte que ma compréhension de liste soit True !

Une idée ?!

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#2

c'est très sale d'écrire un return aussi compliqué Wink
ça coûte pas cher les variables intermédiaires et ça permet de rendre le code plus lisible Smile
Répondre
#3

Non, ce n'est pas très sale !
Je m'insurge complètement. Cela fait même partie des recommandations très sérieuses que tu peux trouver très facilement.
Les listes en compréhension sont à favoriser très fortement.

Bref, cela ne me dit pas comment la contraindre !

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#4

(02-06-2019, 18:47:24)PengouinBSD a écrit :  Non, ce n'est pas très sale !
Je m'insurge complètement. Cela fait même partie des recommandations très sérieuses que tu peux trouver très facilement.
Les listes en compréhension sont à favoriser très fortement.

Bref, cela ne me dit pas comment la contraindre !

Désolée alors, mon python doit être bien trop rouillé. Je peux pas t'aider du coup Angel
Répondre
#5

Y'a pas de soucis @solene Wink

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#6

J'ai trouvé ma réponse :

Code :
return [l.strip('\n') for l in list(rfile) if not l.startswith(
                    ('#', ';', '//', 'Start'))]

Source d'inspiration : https://python-guide-fr.readthedocs.io/f...tinuations
(et, pensez à amener votre serviette avec vous...)

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#7

Ce n'est pas la comprehension list qui fait tiquer solene, mais le return à cet endroit.
Pour sûr que les comprehension list, c'est trèèèès rapide.
Tu peux même faire des comprehension list dans des comprehension list. C'est rigolo Smile (moins quelques mois après quand tu veux remettre le nez dans le code Smile )
Répondre
#8

Oui, elle me l'a expliqué ; et cela fait aussi partie des recommandations
cf : la même page, mais cette fois-ci en début de page : https://python-guide-fr.readthedocs.io/f...licit-code

Donc, ne vous en déplaise très cher... mais il semblerait que je sois dans le bon Wink

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#9

Ah ben oui, j'ai pas dit le contraire Wink

Tu sais qu'on attend tous de voir à quoi ressemblera ce super code que tu sembles développer en secret dans un bunker rempli de chocolat et de licornes ?
Répondre
#10

bzzzz.... py!
(chuuut, si t'a compris)

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)