5 œufs de Pâques Python qui rendent l’apprentissage de la programmation plus amusant
Saviez-vous que Python a plusieurs œufs de Pâques cachés ? Il s'avère que votre langage de programmation préféré n'est pas seulement utile pour la création d'applications, mais aussi un humour de qualité. Découvrons quelques-uns des meilleurs.
5. Bonjour le monde
Si vous avez déjà écrit du code dans n'importe quel langage, il est fort probable que votre premier programme ait été d'imprimer « Hello World » sur la console. Vous pouvez le faire en Python avec une ligne de code.
print("Hello World")
Cependant, il existe une façon plus sophistiquée de le faire. Vous pouvez importer un module appelé __hello__ pour l’imprimer.
import __hello__
Cependant, depuis Python 3.11, vous devez appeler sa méthode principale pour imprimer le texte.
import __hello__
__hello__.main()
Semblable au module __hello__, il existe également un module __phello__ qui fait la même chose.
import __phello__
__phello__.main()
Le module __phello__ a même un attribut spam que vous pouvez appeler pour l’imprimer deux fois. Cela fonctionne dans les versions antérieures à la version 3.11.
import __phello__.spam
En réalité, ces modules ont été ajoutés à Python pour tester si les modules gelés fonctionnaient comme prévu, comme mentionné dans le code source de Cpython.
In order to test the support for frozen modules, by default we define some simple frozen modules: __hello__, __phello__ (a package), and __phello__.spam. Loading any will print some famous words...
Alors, la prochaine fois que vous voudrez imprimer « Hello, World ! », essayez cette astuce pour rire ou impressionner les autres.
4. Le zen de Python
Chaque langage de programmation a des règles et des réglementations, des philosophies et des meilleures pratiques. Python ne fait pas exception. Tim Peters, qui a été un contributeur majeur au langage de programmation Python, a écrit un ensemble de principes pour écrire du code en Python. C’est ce qu’on appelle communément le « Zen de Python ». Cette œuvre littéraire a même été incorporée dans cette langue elle-même. Pour le lire, il suffit d’exécuter :
import this
Vous verrez le zen de Python imprimé à l'écran.
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Si vous regardez le code réel du fichier, vous trouverez quelque chose d'intéressant. Le texte imprimé est crypté à l’origine.
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
Il y a un autre morceau de code qui transforme le texte donné.
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print("".join([d.get(c, c) for c in s]))
Ainsi, ce qui se passe, c'est que le texte original a été crypté à l'aide d'un algorithme de substitution connu sous le nom de ROT13. Il s'agit d'un algorithme réversible. Lorsque vous importez ce module
, ce texte chiffré est déchiffré dans sa forme d’origine et imprimé à l’écran.
3. Appareil dentaire ou pas appareil dentaire
Si vous avez même utilisé Python à distance, vous savez que Python utilise rarement des accolades, l'une des syntaxes les plus courantes dans de nombreux langages populaires. Les accolades sont généralement utilisées pour définir la portée d’un bloc de code, comme les conditions, les boucles, etc. Au lieu d’accolades, Python utilise l’indentation. Mais y aura-t-il un jour des accolades en Python ? Peu probable. Parce que les développeurs ont déjà répondu dans le module __future__.
from __future__ import braces
>>> SyntaxError: not a chance
Il s'agit d'une erreur de syntaxe spéciale que vous ne trouverez dans aucun autre cas, ce qui implique que les accolades n'arrivent jamais en Python. Le module __future__ en Python est utilisé pour implémenter des fonctionnalités dans la version actuelle de Python qui seront incorporées dans une version future. Ceci est fait afin que vous puissiez vous adapter à la nouvelle fonctionnalité. C’était un choix intelligent d’intégrer cet œuf de Pâques dans ce module.
2. Le FLUFL
Le module __future__ contient un autre œuf de Pâques intéressant. Si vous avez déjà utilisé des opérateurs logiques en programmation, vous savez que dans la plupart des langages, le symbole de l'inégalité est != (point d'exclamation suivi d'un signe égal). Cependant, l’un des principaux développeurs de Python, Barry Warsaw, également connu sous le nom d’Oncle Barry, préférait utiliser des opérateurs de diamant (<>) pour les inégalités. Voici le morceau de code.
from __future__ import barry_as_FLUFL
0 != 1
>>> SyntaxError: with Barry as BDFL, use '<>' instead of '!='
0 <> 1
>>> True
1 <> 1
>>> False
FLUFL est l'abréviation de Friendly Language Uncle For Life, qui est apparemment le titre de l'oncle Barry.
1. L’antigravité
Un autre module amusant avec lequel jouer. Je ne vais pas vous le gâcher, mais exécutez simplement ce code et faites-en l'expérience vous-même.
import antigravity
Ce module dispose également d’une fonction geohash(). Cette fonction est utilisée pour le géohachage à l’aide de l’algorithme de Munroe.
Maintenant, cela peut sembler totalement déplacé. Cependant, cette fonction est étroitement liée à l’œuf de Pâques précédent que vous avez vu dans le module antigravité. Des trucs assez chouettes.
Il est toujours intéressant de trouver des informations sur les coulisses des langages de programmation, surtout si cela vous fait sourire. Si cela vous intéresse, vous pouvez envisager d’apprendre Python et d’en faire des choses plus amusantes.