Je veux construire une fonction Python qui calcule,
et je voudrais nommer ma fonction de sommation Σ. De la même manière, aimerait utiliser Π pour le produit, et ainsi de suite. Je me demandais s'il y avait un moyen de nommer une fonction python de cette façon?
def Σ (..):
..
..
Autrement dit, Python prend-il en charge les identifiants Unicode, et si oui, quelqu'un pourrait-il fournir un exemple?
Merci!
La motivation originale pour cela était un morceau de code Clojure que j'ai vu aujourd'hui qui ressemble à,
(defn entropy [X]
(* -1 (Σ [i X] (* (p i) (log (p i))))))
où Σ est une macro définie comme,
(defmacro Σ
... )
et j'ai trouvé ça plutôt cool.
BTW, pour répondre à quelques commentaires sur la lisibilité - avec beaucoup de code stats/ML par exemple, être capable de composer des opérations avec des symboles serait vraiment utile. (Surtout pour les intégrales vraiment complexes et al)
φ(z) = ∫(N(x|0,1,1), -∞, z)
vs
Phi(z) = integral(N(x|0,1,1), -inf, z)
ou même juste le caractère lambda pour lambda() !
Solution du problème
Il convient de souligner que Python 3 prend en charge les identifiants Unicode, mais n'autorise que les symboles de type lettre ou chiffre (voir http://docs.python.org/3.3/reference/lexical_analysis.html#identifiers pour plus de détails). C'est pourquoi Σ fonctionne (rappelez-vous que c'est une lettre grecque, pas seulement un symbole mathématique), mais √ ne fonctionne pas.
Pour toute personne intéressée, j'ai créé un site Web qui répertorie tous les caractères Unicode valides dans une variable Python https://www.asmeurer.com/python-unicode-variable-names/ (attention, il y en a pas mal, plus de 100000 en fait)
Aucun commentaire:
Enregistrer un commentaire