Je sais pas pour vous, mais moi je me souviens jamais de :
# -*- coding: utf-8 -*- |
Je le copie/colle à chaque fois, et sur sublime j’ai un snippet pour le taper.
Je viens d’apprendre, après 10 putain d’années à coder en python, que le header suivant était parfaitement valide :
# coding: utf-8 |
Bordel de merde, pourquoi c’est pas écrit dans tous les tutos ? Pourquoi on se tape encore l’ancien ?
Évidement avec Python 3, y a souvent plus besoin d’en-tête du tout, mais shit, ce genre détail c’est super con. Vous imaginez pas le nombre d’élèves à qui j’ai fait apprendre la première version toute pourrie alors que la seconde est si simple.
Grr, dirais-je.
Rhaaa…. je suis moi aussi sur le cul ! Je vais faire un gros gros sed sur tous mes dépots comme ça les prochains copier/coller seront plus joli !
Merci pour l’info
Ah tiens, c’est vrai ça, ça énerve, maintenant que tu le dis… mais c’est vraiment cool d’avoir cet info ! Merci !
En fait on peut faire ce qu’on veut.
Il faut juste que ça respecte la regex “coding[:=]\s*([-\w.]+)” et que ce soit dans les 2 premières lignes.
(https://www.python.org/dev/peps/pep-0263/)
Tout simplement parce que ça présente l’intérêt d’avoir un header qui en plus d’être reconnu par Python, l’est aussi par divers éditeurs comme Emacs ? La syntaxe vient de là à la base.
C’est pas aux langage de s’adapter aux éditeurs, ce sont aux éditeurs de s’adapter aux langages.
De plus, c’est le fait que personne ne parle des alternatives qui me fait chier. C’est juste idiot de faire un status quo de notation pour une minorité d’utilisateur d’un outil:
http://www.google.com/trends/explore#q=%2Fm%2F01r_y0%2C%20%2Fm%2F07zlj%2C%20%2Fm%2F01yp0m%2C%20%2Fm%2F01fchg%2C%20%2Fm%2F01fs1d&cmpt=q&tz=
Et encore emacs est long à configurer comparé à elipse ou visual studio, donc ça boost les recherches pour des tutos.
Je trouves que ça manque de fun l’utf 8 , tu peux aussi coder en rot13 si tu veux, , oui, python le permet et a meme un codec pour ça.
Un petit exemple :
https://breakingcode.wordpress.com/2010/07/23/quickpost-hiding-your-python-source-with-rot13/
comme ça , tu pourra aussi obfusquer ton code de ninja.
Eh oui, à la base c’est bien pour satisfaire ces sieurs les utilisateurs d’emacs. On trouve aussi plus rarement le
# vim:fileencoding=utf-8
par les utilisateurs de vim. Mais effectivement c’est une belle connerie, qui heureusement tend à disparaitre.rigolo, perso j’ai fait le chemin inverse (#coding:utf-8 vers # –– coding: utf-8 –– ).
Mais faut dire que mon IDE (PyCharm pour ne pas le nommer) le fait pour moi, donc je n’ai pas trop de mérite.
Perso j’utilise :
# Bonjour, je voudrais utiliser cet encoding: utf-8 ; et sinon, la famille ça va ?
et ça marche très bien.
C’est marrant, mais je me lance dans la programmation sur python et je me suis justement posé la question y’a 2 jours. J’avais bien trouvé la version simple mais comme j’ai lu un article sur Sam & Max la version avec les -*- alors je m’y suis mis !
Lol
Parce que Emacs c’est le bien® ?
En même temps, les éditeurs ont souvent une énorme heuristique pour détecter l’encodage…
D’un autre côté s’ils étaient utilisés sur un OS pas pourri ils utiliseraient un attribut étendu pour s’en rappeler, comme on fait depuis 15 ans sous BeOS et Haiku… (et même sous GNU/Linux il y a un “user.charset” (très mal nommé) standardisé par FreeDesktop : http://www.freedesktop.org/wiki/CommonExtendedAttributes/#generalattributesincurrentuse mais bien sûr personne ne s’en sert)
Au final tu ne viens pas d’apprendre cette syntaxe tu viens de la réapprendre. Tu l’as déjà utilisée dans un ancien article : http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute .
Mais c’est le genre de truc dont on ne se souvient jamais !
Non, j’ai mis à jour l’article a posteriori :) C’est un des articles les plus lus du blog, je voulais pas que les nouveaux venus passent à côté.
Au temps pour moi alors. En tous cas merci pour les articles !
Bonjour,
Cette info est-elle confirmé ailleurs sur la toile ?
Moi je vous crois volontiers (I’m lazy) mais c’est eux à côté de moi, ils veulent pas vous croire.
Ailleurs sur la toile ? Autant aller voir carrément la spec (https://www.python.org/dev/peps/pep-0263/).
La regex de validation est “coding[:=]\s*([-\w.]+)”, or:
<pre lang=”python>
Le compte est bon.
“#coding:utf8” et “# coding= utf-8” et “# fjdskqmfjsdqlmdkfsjkcoding: utf8 zarma” marcherait aussi, c’est juste que “# coding: utf-8” est le truc le plus simple et le plus lisible à écrire.
Pour les gros minimalistes comme moi…
# coding: u8
fonctionne aussi :PPour les militants : “# cocoricoding: utf8, l’encoding bien français” avec un C cédille qui va bien. C’est cocasse d’accepter un caractère non-ASCII sur la ligne qui déclare l’encodage :-)
Si on en croit le manuel d’emacs, la version originale serait plutôt celle-ci :
Traduction faite :
:-)
cf. ici : https://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables