Comments on: Les context managers et le mot clé with en Python http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Florent http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-197651 Fri, 31 Aug 2018 09:25:58 +0000 http://sametmax.com/?p=1987#comment-197651 T’as oublié de passer le self dans tes constructeurs.

]]>
By: Sam http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-189352 Sun, 03 Sep 2017 19:34:31 +0000 http://sametmax.com/?p=1987#comment-189352 Merci.

]]>
By: Antoine http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-189213 Tue, 29 Aug 2017 14:01:56 +0000 http://sametmax.com/?p=1987#comment-189213 Tout est vraiment bien, une seule petite remarque:

dans la rubrique “Context managers sous forme de fonctions”, le nom open conduit à une erreur (du moins en python 3.5.2). A remplacer par:

@contextmanager

def opened(filename, mode):

….

D’autre part, cela ne reproduit pas tous les comportements du open natif.

with opened( ‘/etc/fstab’, ‘r’ ) as f:

…. for line in f: print( line, end=” ) # c’est Ok

Les deux blocks suivants, qui marchent avec open natif, donnent des erreurs avec opended

f = opened(( ‘/etc/fstab’, ‘r’ )

with f:

…. for line in f: print( line, end=” ) # TypeError: ‘_GeneratorContextManager’ object is not iterable

et

f = opened(( ‘/etc/fstab’, ‘r’ )

for line in f: print( line, end=” ) # TypeError: ‘_GeneratorContextManager’ object is not iterable

f.close

Par quel mystère le open natif accepte-t’il ces trois syntaxes? J’ai cherché, cherché … et … Big silence …

]]>
By: Antoine http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-189199 Mon, 28 Aug 2017 16:57:46 +0000 http://sametmax.com/?p=1987#comment-189199 Merci pour vos super articles, cela m’a permis d’avancer à vitesse V en python (et passer de 0 ligne à +4000 lignes de code en 2 mois).

Petites coquilles dans la page “context managers et with”:

class Cd(objet): à rectifier en object

et dans init, il manque self

class OpenFile(objet): à rectifier en object

et dans init, il manque self

]]>
By: Sam http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-189017 Sun, 20 Aug 2017 14:18:45 +0000 http://sametmax.com/?p=1987#comment-189017 :)

]]>
By: Nob http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-188930 Fri, 18 Aug 2017 11:39:01 +0000 http://sametmax.com/?p=1987#comment-188930 Hello,

Je poste le commentaire ici mais il s’applique à tout votre blog (et les articles que j’ai lu.)

Merci pour l’effort et la qualité de vos articles,j’ai pu comprendre typiquement le fonctionnement des descripteurs ainsi que des contexts manager rapidement (alors qu’avec le document de référence j’y serais encore.) !

]]>
By: ast http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-176598 Mon, 29 Feb 2016 16:25:50 +0000 http://sametmax.com/?p=1987#comment-176598 “tain le décorateur/context manager 2 en 1 pas simple ! Pas sur que j’arrive à le réécrire sans regarder l’article.

]]>
By: Sébastien http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-160135 Sat, 02 May 2015 13:17:09 +0000 http://sametmax.com/?p=1987#comment-160135 Je cherchais à générer un fichier XML. L’idée d’utiliser la notion de context manager me trottait. En Googlant un peu j’ai trouvé cette excellente bibliothèque qui mérite d’être connue : http://www.yattag.org/ https://github.com/leforestier/yattag


from yattag import Doc, indent

doc, tag, text = Doc().tagtext()

with tag('persons'):
    with tag('person', id = '0'):
        with tag('name'):
            text('Pierre')
    with tag('person', id = '1'):
        with tag('name'):
            text('Paul')
    with tag('person', id = '2'):
        with tag('name'):
            text('Jacques')

result = indent(
    doc.getvalue(),
    indentation = ' '*4,
    newline = '\r\n'
)

print(result)

Ce bout de code permet de générer:






Pierre





Paul





Jacques





]]>
By: Sam http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-89347 Tue, 08 Jul 2014 18:25:31 +0000 http://sametmax.com/?p=1987#comment-89347 J’ai corrigé toutes les coquilles. Merci pour votre vigilance, les articles gagnent vraiment en qualité quand vous corrigez mes conneries :)

]]>
By: bato-san http://sametmax.com/les-context-managers-et-le-mot-cle-with-en-python/#comment-89145 Tue, 08 Jul 2014 15:02:24 +0000 http://sametmax.com/?p=1987#comment-89145 @Lujeni

@TimeIt
def ma_fonction():
  blabla

correspond a :

def ma_fonction():
   blabla
   ma_fonction = TimeIt(ma_fonction)

or ici TimeIt est la ref d une classe et non pas d une instance de classe , donc ” TimeIt(ma_fonction) ” appelle la méthode __new__() de TimeIt ( et non pas __call__() ) et lui passe en paramètre une fonction , ce qui n est pas apprecié de la part du compilateur X)
Pour appeler la méthode __call__() (et qu accessoirement ca marche ;v ), il faut donc écrire :

def ma_fonction():
  blabla
  ma_fonction = TimeIt()(ma_fonction)

soit:

@TimeIt()
def ma_fonction():
  blabla

En espérant avoir aidé :)

]]>