Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3474
| From | Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: « Factoriser » un paramètre |
| Date | 2021-04-11 19:59 +0200 |
| Organization | Université de Strasbourg |
| Message-ID | <87im4s8zyy.fsf@universite-de-strasbourg.fr.invalid> (permalink) |
| References | <s4utdp$335$1@cabale.usenet-fr.net> |
Olivier Miakinen <om+news@miakinen.net> writes:
> Dans une classe j'ai la méthode suivante. Peu importe le détail de ce
> qu'elle fait, le point important est tous ces « print » avec le paramètre
> « file=file ».
>
> def print(self, indent=0, *, file=sys.stdout):
> """Imprime un filtre auto-indenté"""
> print(" "*indent, end="", file=file)
> if self.neg: print("!", end="", file=file)
> if (self.t == "RE"):
> print(f"{self.key} /{self.regex.pattern}/", file=file)
> else:
> print(self.t, file=file)
> for subf in self.subs: subf.print(indent+1, file=file)
>
> Ma question : y a-t-il un moyen de « factoriser » ce paramètre, avec une
> syntaxe du style « with file=file », de façon à pouvoir le supprimer de
> tous les appels à la fonction print() ?
Il n'y a pas vraiment de solution pour cela, sauf à définir une fonction
locale :
def print(self, indent=0, *, file=sys.stdout):
def pr (*p, **k): print (*p, **k, file=file)
...
et utiliser pr (...) dans la suite (j'ai pas essayé, hein, cela dépend
peut-être de la version de python pour l'ajout de "file=file" après **k).
Une autre solution est de rediriger sys.stdout, ce qui est peut-être le
plus simple si c'est applicable. Voir
https://docs.python.org/3/library/contextlib.html#contextlib.redirect_stdout
> [
> Question subsidiaire : comment traduire au mieux le sens de « print » dans
> le commentaire au début de ma fonction ? Je n'ai pas l'impression que le
> terme « imprime » ni le terme « affiche » ne conviennent dans tous les cas.
> ]
J'utilise "afficher" en général, parce qu'imprimer m'évoque
immanquablement le papier...
-- Alain.
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
« Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 15:26 +0200
Re: « Factoriser » un paramètre Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2021-04-11 19:27 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 20:40 +0200
Re: « Factoriser » un paramètre Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2021-04-11 21:40 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 22:04 +0200
Re: « Factoriser » un paramètre Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-04-11 19:59 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 20:51 +0200
csiph-web