Effectivement, mais si l'on passe par readlines ou l'itérateur de l'objet fichier, on n'utilise pas split
Oui, mais si on veut lister les mots de chaque ligne on sera bien obligé d’appliquer split() à chaque ligne.
Juste pour pinailler, pas la peine de mettre elsif ou else après un return. Si on passe par le return, on sort direct de la fonction.
OK
On me crie dans l'oreillette que si l'on fait comme ça et que l'on vire + tard les return, le code devient totalement faux.
Je répondrais qu'il faut un minimum de rigueur quand on modifie du code et que les tests unitaires servent à vérifier ça.
Dans ce cas, je préfère garder elif et else, ça ne coûte pas plus cher.
reference comme nom de dictionnaire, ce n’est vraiment pas terrible. C’est même à proscrire, puisque tous les noms de “variables“ en Python sont en réalité des références (= des étiquettes collées sur des objets).
for mot in open(nomdefichier).readline().split()
ça c’est du condensé !
On peut faire mieux. Ou pire selon certains.
1 2 3
| d = {}
[ d.update( (mot,categorie) for mot in open(nomdefichier).readline().split() )
for (nomdefichier, categorie) in [('animaux.txt','animal'),('objets.txt', 'objet')] ] |
cf aussi
d = dict( (mot,'animal') for mot in open('animaux.txt').readline().split() )
qui crée aussi le dictionnaire.
Partager