<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programmation-en-Python | Dr. Goulu</title><link>https://drgoulu.com/tag/programmation-en-python/</link><atom:link href="https://drgoulu.com/tag/programmation-en-python/index.xml" rel="self" type="application/rss+xml"/><description>Programmation-en-Python</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Mon, 06 Jan 2020 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_8d57a97d564ea9bb.png</url><title>Programmation-en-Python</title><link>https://drgoulu.com/tag/programmation-en-python/</link></image><item><title>Quelles sont les situations où les espaces blancs devraient être évités en Python ?</title><link>https://drgoulu.com/2020/01/06/quelles-sont-les-situations-ou-les-espaces-blancs-devraient-etre-evites-en-python/</link><pubDate>Mon, 06 Jan 2020 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2020/01/06/quelles-sont-les-situations-ou-les-espaces-blancs-devraient-etre-evites-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Les recommandations sont dans le
. Utilisez un IDE qui formate le code de cette manière.&lt;/p&gt;
&lt;p&gt;A ma connaissance il n&amp;rsquo;existe aucun cas ou un espace peut provoquer un équivoque, à part la fameuse indentation bien sur…&lt;/p&gt;
&lt;p&gt;Comme j&amp;rsquo;ai déjà eu l&amp;rsquo;occasion de le dire, l&amp;rsquo;indentation Python encourage vraiment à écrire de petites fonction et de petits blocs. Ma règle personnelle est de ne jamais imbriquer plus de 3 niveaux dans une fonction, et de ne jamais faire de fonction plus longue qu&amp;rsquo;un écran. Et de ne pas utiliser d&amp;rsquo;écran en mode portrait…&lt;/p&gt;</description></item><item><title>Pourquoi cette popularité de Python en si peu d'années ?</title><link>https://drgoulu.com/2019/12/07/pourquoi-cette-popularite-de-python-en-si-peu-d-annees/</link><pubDate>Sat, 07 Dec 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/12/07/pourquoi-cette-popularite-de-python-en-si-peu-d-annees/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
existe depuis 1991, donc il lui a quand même fallu une bonne vingtaine d&amp;rsquo;années pour devenir populaire…&lt;/p&gt;
&lt;p&gt;Pendant ces années, une énorme variété de librairies ont été écrites dans ce langage et mises à disposition gratuitement et facilement (via pip ou conda). Aujourd&amp;rsquo;hui, vous trouvez à coup sur des librairies qui implantent 90% des fonctions de haut niveau dont vous avez besoin pour une application quelle qu&amp;rsquo;elle soit.&lt;/p&gt;
&lt;p&gt;De plus, le langage s&amp;rsquo;est révélé très bien conçu, permettant d&amp;rsquo;utiliser et de combiner proprement plusieurs &amp;ldquo;
&amp;rdquo; (je hais ce mot…) . Certains concepts de haut niveau comme les
(les décorateurs c&amp;rsquo;est génial !
) ou les
permettent d&amp;rsquo;étendre les fonctionnalités du langage par des librairies &amp;ldquo;standard&amp;rdquo;. Par exemple le typage statique a été ajouté par la librairie
qu&amp;rsquo;on peut utiliser (ou pas) alors que dans tous les autres langages c&amp;rsquo;est une notion fondamentale du langage (ou pas).&lt;/p&gt;
&lt;p&gt;Bref, ce langage s&amp;rsquo;est révélé à l&amp;rsquo;usage très robuste, étendu et évolutif, d&amp;rsquo;où sa popularité.&lt;/p&gt;
&lt;h6 id="notes-de-bas-de-page"&gt;Notes de bas de page&lt;/h6&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Qu'est-ce qu'un bon exemple de variable globale et de son utilisation en Python ?</title><link>https://drgoulu.com/2019/11/26/qu-est-ce-qu-un-bon-exemple-de-variable-globale-et-de-son-utilisation-en-python/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/11/26/qu-est-ce-qu-un-bon-exemple-de-variable-globale-et-de-son-utilisation-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;il n&amp;rsquo;y a aucun bon exemple d&amp;rsquo;utilisation d&amp;rsquo;une variable globale dans aucun langage. Les variables globales, c&amp;rsquo;est le Mal.&lt;/p&gt;
&lt;p&gt;En Python, les quelques variables globales indispensables sont rangées dans un dict retourné par la fonction globals():&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;__name__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__doc__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__package__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__loader__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_frozen_importlib.BuiltinImporter&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__spec__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__annotations__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__builtins__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;builtins&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Comme vous le voyez, toutes les variables globales ont un nom encadré par des &lt;strong&gt;doubles&lt;/strong&gt; , ce qui signifie qu&amp;rsquo;elles sont privées et ne doivent pas être utilisées, sauf par des adultes consentants.&lt;/p&gt;
&lt;p&gt;quand vous faites&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vous polluez cette pure beauté minimaliste:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;__name__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__doc__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__package__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__loader__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_frozen_importlib.BuiltinImporter&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__spec__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__annotations__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__builtins__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;builtins&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;BEARK !&lt;/p&gt;</description></item><item><title>Quels sont les différents types d'arguments que vous pouvez utiliser pour définir une fonction Python ?</title><link>https://drgoulu.com/2019/11/26/quels-sont-les-differents-types-d-arguments-que-vous-pouvez-utiliser-pour-definir-une-fonction-python/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/11/26/quels-sont-les-differents-types-d-arguments-que-vous-pouvez-utiliser-pour-definir-une-fonction-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;un seul : référence à un objet. (
)&lt;/p&gt;
&lt;p&gt;il faut bien réaliser qu&amp;rsquo;en python, même les (petits) entiers sont des objets, par exemple :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=100
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; (a+a) is 2*a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;True
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;parce que l&amp;rsquo;objet 200 est le même des deux côtés du is, car prédéfini, mais&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; (a+a) is 2*a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;False
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;parce que là, Python construit deux instances d&amp;rsquo;objets 2000 distinctes.&lt;/p&gt;
&lt;p&gt;donc même quand vous croyez passer un entier en paramètre à une fonction, vous passez en réalité une référence à un objet de classe int&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; type(1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;class &amp;#39;int&amp;#39;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Pourquoi dit-on que Python est un langage facile à apprendre ?</title><link>https://drgoulu.com/2019/10/29/pourquoi-dit-on-que-python-est-un-langage-facile-a-apprendre/</link><pubDate>Tue, 29 Oct 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/10/29/pourquoi-dit-on-que-python-est-un-langage-facile-a-apprendre/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parce qu&amp;rsquo;il l&amp;rsquo;est.&lt;/p&gt;
&lt;p&gt;Si vous ne connaissez aucun langage de programmation, Python vous permettra d&amp;rsquo;apprendre la programmation en acquérant de bons réflexes : indentation, variables locales, …&lt;/p&gt;
&lt;p&gt;Si vous connaissez d&amp;rsquo;autres langages de programmation, Python vous apparaîtra plus simple pour tout.&lt;/p&gt;
&lt;p&gt;Avec un peu de pratique vous verrez qu&amp;rsquo;il n&amp;rsquo;y a rien de superflu ou de verbeux en Python. Tout est aussi simple et clair qu&amp;rsquo;il doit l&amp;rsquo;être.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Quelles sont les bonnes astuces à connaître pour développer en Python ?</title><link>https://drgoulu.com/2019/10/01/quelles-sont-les-bonnes-astuces-a-connaitre-pour-developper-en-python/</link><pubDate>Tue, 01 Oct 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/10/01/quelles-sont-les-bonnes-astuces-a-connaitre-pour-developper-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pour du dev sérieux, utiliser la distribution
et un IDE comme PyCharm, VSCode, ou un Eclipse avec PyDev comme
par exemple.&lt;/li&gt;
&lt;li&gt;Définir un e
par projet et y installer uniquement les packages nécessaires.
pour les gros projets.&lt;/li&gt;
&lt;li&gt;Vraiment bien comprendre que tout est objet, et que les &amp;ldquo;variables&amp;rdquo; sont en fait des références à des objets. Si vous ne comprenez pas pourquoi :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=[1,2,3]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; b=a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a.append(4)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; b
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[1, 2, 3, 4]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;alors révisez
avant de coder.
4. Vraiment bien comprendre que les objets sont définis par leur
, qui gère l&amp;rsquo;héritage et tout et tout.
5. Comprendre les
( instruction
), et la notion sous jacente d&amp;rsquo;itérateur.
6. Connaître l&amp;rsquo;existence de toutes les librairies de
Python. Il y a très probablement déjà là des briques importantes de votre futur programme.
7. Cherchez les autres briques sur
avant de réinventer la roue.
8. Have fun ! N&amp;rsquo;oubliez pas de faire un petit
&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import antigravity&lt;/code&gt;
de temps en temps :-)&lt;/p&gt;</description></item><item><title>Quelle est la fonctionnalité la plus intéressante du langage de programmation Python ?</title><link>https://drgoulu.com/2019/06/16/quelle-est-la-fonctionnalite-la-plus-interessante-du-langage-de-programmation-python/</link><pubDate>Sun, 16 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/16/quelle-est-la-fonctionnalite-la-plus-interessante-du-langage-de-programmation-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Puisqu&amp;rsquo;on demande LA plus intéressante, je choisis les décorateurs.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est en les découvrant que j&amp;rsquo;ai réalisé que les
du &amp;ldquo;Gang of Four&amp;rdquo; pouvaient se formaliser dans un langage bien fichu. Et le fait est que d&amp;rsquo;autres patterns peuvent être réalisés via les décorateurs, ce que Python fait d&amp;rsquo;ailleurs.&lt;/p&gt;
&lt;p&gt;Bien sur on peut écrire des décorateurs dans presque tous les langages, mais en Python c&amp;rsquo;est simple, et donc beau.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Qu'est-ce qu'une classe en Python ?</title><link>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</link><pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En première approximation, la même chose qu’une
dans n’importe quel autre langage.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Les classes sont un moyen de réunir des données et des fonctionnalités. Créer une nouvelle classe crée un nouveau &lt;em&gt;type&lt;/em&gt; d&amp;rsquo;objet et ainsi de nouvelles &lt;em&gt;instances&lt;/em&gt; de ce type peuvent être construites. Chaque instance peut avoir ses propres attributs, ce qui définit son état. Une instance peut aussi avoir des méthodes (définies par la classe de l&amp;rsquo;instance) pour modifier son état.
(
)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En deuxième approximation, c’est plus subtil et plus puissant :
, on peut définir des
, des
…&lt;/p&gt;</description></item><item><title>Pourquoi les objets intégrés mutables ne peuvent-ils pas être transformés en Python ? Quel est l'avantage de cela ?</title><link>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</link><pubDate>Mon, 06 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;qu’appelez-vous “transformés” ? Vous voulez dire modifiés comme&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a=(1,&amp;#39;truc&amp;#39;,true) # tuple
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a[1]=&amp;#39;machin&amp;#39; # erreur
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;? Alors vous voulez plutôt dire
(immutable en anglais).&lt;/p&gt;
&lt;p&gt;Un objet immutable permet de garantir la cohérence des données qu’il contient en obligeant à les manipuler comme un tout. Ca peut être utile en programmation multi-thread par exemple : chaque thread est sure que l’objet partagé n’est pas en train d’être modifié par une autre thread.&lt;/p&gt;
&lt;p&gt;Un autre avantage est que le hash d’un objet immuable est constant, ce qui permet la recherche très rapide d’un tel objet dans un set ou un dict. C’est pourquoi les clés de dict doivent être de type immuable&lt;/p&gt;</description></item><item><title>Est-il possible de créer des méthodes statiques en Python et de les appeler sans initialiser une classe, comme par exemple : ClassName.StaticMethod ()?</title><link>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;oui, ça se fait à l’aide du décorateur @staticmethod qui sert exactement à ça:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;class MyClass:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @staticmethod
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def staticmethod():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return &amp;#39;static method called&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;on peut ensuite appeler soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass().staticmethod(); # crée un objet, puis appelle sa méthode qui est statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass.staticmethod(); # appelle directement la méthode statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;les décorateurs, c’est absolument génialement fabuleusement puissant et simple&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item></channel></rss>