Ah mais quel boulet j'ai codé trop vite, bien vu ! et ça me fait gagner pas mal d'appels sur le profilage, c'est top !Envoyé par wiztricks
Ah mais quel boulet j'ai codé trop vite, bien vu ! et ça me fait gagner pas mal d'appels sur le profilage, c'est top !Envoyé par wiztricks
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Il me semblait bien moi aussi, qu'il était superflu ce decode('utf-8')
Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.
C'est comme pour le "return" qui pose question dans le swinnen: ça fonctionne très bien sans... et si l'auteur avait pris le temps de se relire de façon critique, il l'aurait probablement supprimé. Mais de fait, après s'être usé les yeux à faire fonctionner un bout de code, il y a des détails qu'on ne voit plus: on sature.
Normal et pas si grave (la qualité militaire demande des moyens et un autre entrainement).
- W
Tu auras compris que c'était de l'humour de ma part pour illustrer mon incompétence. Je suis bien incapable de comprendre et de surcroit d'analyser le code que vous avez partagé dans cette discutions.
Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.
Je voulais juste raccrocher sur le sujet initial: quand non a commencé, on se posait aussi des questions sur les codes qu'on lisait... et suivant son niveau, on ne se posera pas les mêmes questions, on ne lira pas le code de la même façon,...
- W
En fait, ma réponse est incomplète !
Oui, un fichier est un itérateur
Mais, pour information, l'instruction with ne retourne pas obligatoirement l'objet passé à "with", et cet objet "interne" lui, peut-être un itérateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fs = open("truc.txt") for ligne in fs: print("->", ligne)
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class ParseurCle: def __init__(self, paragraphe: str): self.items = ( l.split("=")[0] for l in paragraphe.splitlines() if l and "=" in l ) def __enter__(self): return self.items # on retourne/consume ce Générateur def __exit__(self, *exc): return True texte = """ a = 1 b = 2 x c = 3 """ with ParseurCle(texte) as magique: for line in magique: # ici, en fait "magique" est "ParseurCle.items" et pas ParseurCle ! print("clé: ", line)
$moi= ( !== ) ? : ;
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Il s'agit du bloc "with".
Ce bloc doit être associé à une ressource et garantit la libération de la ressource quand on le quitte.
Et cela peut s'appliquer à la majorité des ressources informatiques qui doivent être "ouvertes" pour y accéder puis être "refermées" en fin de travail (fichiers, base de données, socket, ...)
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with open(fichier, ...) as fp: # Ici le fichier est ouvert et est accessible via "fp" # Ici le fichier est ouvert et est accessible via "fp" # Ici le fichier est ouvert et est accessible via "fp" # Ici le fichier est automatiquement fermé (même pas besoin d'écrire fp.close())
Ensuite papajoker montre comment créer son propre "with" qu'il appelle "ParseurCle".
Cet objet se crée de façon classique (il te faudra apprendre l'objet pour connaître cette "façon classique") auquel on rajoute deux méthodes particulières :
- __enter__() qui est automatiquement appelée quand on appelle le with (là tu progammes l'ouverture de la ressource que tu veux offrir)
- __exit__() qui est automatiquement appelée quand on quitte le bloc (là tu programmes le nettoyage)
De là tout utilisateur pourra appeler with ParseurCle(data_a_traiter) as variable_pour_les_traiter et aura l'assurance qu'en quittant le bloc, les ressources qu'il aura pu "réserver" seront libérées.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
C'est un poil plus clair.
Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager