A basket full of Easter eggs and the Python logo.
Agence web » Actualités du digital » 5 œufs de Pâques Python qui rendent la programmation d'apprentissage plus amusante

5 œufs de Pâques Python qui rendent la programmation d'apprentissage plus amusante

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 créer des applications, mais aussi un humour de qualité. Faisons quelques-unes des meilleures.

5

Bonjour le monde

Si vous avez déjà écrit du code dans n'importe quelle langue, il est très probable que votre premier programme a été d'imprimer « Hello World » sur la console. Vous pouvez le faire dans Python avec une ligne de code.

print("Hello World")

Cependant, il existe un moyen plus sophistiqué 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 réellement le texte.

        import __hello__
__hello__.main()

Semblable au module __hello__, il y a aussi un module __phello__ qui fait la même chose.

        import __phello__
__phello__.main()

Le module __phello__ a même un attribut de spam que vous pouvez appeler pour l'imprimer deux fois. Cela fonctionne dans des versions de plus de 3,11.

import __phello__.spam

En réalité, ces modules ont été ajoutés à Python pour tester si les modules congelés fonctionnaient comme prévu, comme mentionné dans le code source 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... 

Donc, la prochaine fois que vous souhaitez imprimer «Hello, World!», Essayez cette astuce pour avoir un petit rire ou impressionner les autres.

4

Le zen de Python

Chaque langage de programmation a quelques règles et réglementations, philosophies et 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 dans Python. Ceci est communément appelé «Zen de Python». Cette pièce de littérature a même été incorporée dans cette langue elle-même. Pour le lire, tout ce que vous avez à faire est de courir:

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

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

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

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 d'origine a été crypté à l'aide d'un algorithme de substitution appelé ROT13. C'est un algorithme réversible. Lorsque vous importez le this Le module, ce texte crypté est déchiffré à sa forme d'origine et imprimé à l'écran.

3

Accolades ou sans accolades

Si vous avez même utilisé à distance Python, vous savez que Python utilise rarement des accolades bouclées, l'une des syntaxes les plus courantes dans de nombreuses langues populaires. Les accolades bouclées sont généralement utilisées pour définir la portée d'un bloc de code, telles que les conditionnels, les boucles, etc. Au lieu des accolades, Python utilise l'indentation. Mais y aura-t-il jamais 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 à Python. Le module __future__ dans Python est utilisé pour implémenter des fonctionnalités dans la version Python actuelle qui sera incorporée dans une future version. Cela est fait afin que vous puissiez s'adapter à la nouvelle fonctionnalité. Ce fut un choix intelligent pour 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 dans la programmation, vous savez que dans la plupart des langues, le symbole de l'inégalité est! = (Marque d'exclamation suivie d'un signe égal.) Cependant, l'un des principaux développeurs de Python, Barry Warsovie, également connu sous le nom de Oncle Barry, a préféré utiliser des opérateurs de diamants (<>) pour l'inégalité. Voici le bit 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 signifie un langage amical Oncle pour la vie, qui est apparemment le titre de l'oncle Barry.

1

antigravité

Un autre module amusant avec qui jouer. Je ne le gâterai pas pour vous mais exécutez ce code et en faisai l'expérience vous-même.

import antigravity

Ce module a également une fonction GeoHash (). Cette fonction est utilisée pour le géohashing à l'aide de l'algorithme 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 soignés.


Il est toujours intéressant de trouver des trucs en coulisses sur les langages de programmation, surtout si cela vous fait sourire. Si cela vous intéresse, vous pouvez envisager d'apprendre Python et de faire plus de trucs amusants avec.

★★★★★