GOOGLE ADS

dimanche 17 avril 2022

Identifiants Unicode en Python ?

Je veux construire une fonction Python qui calcule,

alt text

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

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...