J'ai remarqué que je ne peux pas utiliser tous les caractères Unicode dans mon code source Python.
tandis que p> est parfaitement allright (bien qu'obsensical [probablement?]), p> Ce n'est pas autorisé (le zéro de l'indice qui est). p> Je ne peux pas non plus utiliser d'autres personnages, dont je reconnais la plupart des lettres autres que des lettres (opérateurs mathématiques par exemple). J'ai toujours pensé que si j'enlève juste aux règles que je connais, c'est-à-dire de composer des noms de lettres et de chiffres, avec une lettre comme premier caractère, tout ira bien. Maintenant, l'indice zéro est clairement un «nombre». Donc, mon impression était fausse. P> Je sais que je devrais éviter d'utiliser caractères spéciaux em>. Toutefois, la définition de la fonction ci-dessus (la décroissance exponentielle qui est) me semble parfaitement raisonnable - car elle ne changera jamais, et cela transmet ainsi toutes les informations nécessaires à un autre programmeur à l'utiliser. P> My Question donc, exactement quels personnages sont autorisés et qui ne sont pas? Et où? P> Modifier strong> Ma question concerne pourquoi certains personnages sont autorisés là-bas, tandis que d'autres ne le sont pas.
J'aimerais savoir s'il existe des règles générales qui s'appliquent non seulement à ma situation, il doit y avoir. Il semble que mon erreur ne soit pas un accident. P> Editer 2: P> La Strong> Réponse Strong> La permission de Beau Martãnez, me dirigant vers la référence de la langue, où je aurait dû regarder dans la première place: p> http://www.dcl.hpi.uni-potsdam.de/home/loewis/table-3131.html
Il semble que les caractères autorisés sont tous choisis. P> p>
Très bien, je semble ne pas avoir été assez clair. J'utilise Python3, il n'est donc pas nécessaire de déclarer le codage du fichier source. Apparent que j'ai pensé à ce que ma définition de fonction chinoise fonctionne. P>
3 Réponses :
Dites à Python quel est le codage approprié:
https://www.python.org/dev/peps/pep-0263/ p>
... p>
# coding=utf-8
Désolé, j'aurais dû mentionner que j'utilise Python 3.
selon le Référence de langue , Python 3 permet une grande variété de caractères comme identifiant. p>
que zéro caractère d'indice semble être un nombre, mais ce n'est pas pour Python; Python ne traite que 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 en tant que nombres. C'est en fait un caractère, vous pouvez donc l'utiliser comme un identifiant (c'est comme s'il était, par exemple, par exemple, un caractère grec tel que phi). P>
Surtout, comment pouvez-vous facilement taper ces personnages avec votre clavier? Je ne veux pas tirer la carte du personnage chaque fois que je dois appeler vos fonctions, par exemple. L'appelant "maximum_decay_rate" ou quelque chose de beaucoup plus intuitif pour tout utilisateur, pas seulement une majeure physique, rend votre code plus lisible. P>
Si vous dites que ce n'est pas permis, c'est probablement parce que vous n'avez pas spécifié le codage de caractères pour votre fichier source. Il peut être spécifié en ayant # - * - codage: utf-8 - * - code> (ou quel que soit le codage) au début de votre fichier source. P>
Comme vous pouvez le constater, je n'utilisais que des caractères «spéciaux» où ils n'auraient jamais besoin d'être typés par personne, à moins que l'univers ne change que c'est l'esprit de la décomposition exponentielle. :-) Mais oui, cela devrait probablement être appelé décroissant (). J'ai mis à jour la question maintenant.
Chaque caractère Unicode contient des «propriétés» spécifiques, à trouver dans la base de données de caractères Unicode et à notre objectif que les propriétés telles que la catégorie générale sont les plus importantes. Ils permettent de partitionner tous les caractères en grands groupes: P>
l code>) li>
- NUMÉROS (
N CODE>) LI>
- marques (
m code>) li>
- ponctuations (
p code>) li>
- symboles (
s code>) li>
- séparateurs (
z code>) li>
- Autre (
C CODE>) LI>
ul>
Les groupes ont des sous-groupes, par exemple lu code> est majuscule_letter code>. Selon la référence linguistique Python (3.4.1), il convient d'abord de normaliser la séquence de caractères dans la forme NFKC (qui signifie en pratique signifie décomposer des caractères avec des diacritiques et «simplifier», par exemple la modification de l'indice 0 code> dans la normale 0 code>). Ensuite, le début de l'identifiant doit être un trait de soulignement ou une lettre (le groupe de la lettre entière plus NL code> - nombre de lettres), plus quelques autres symboles de lettre. Il devient beaucoup plus intéressant lorsque nous examinons des personnages qui sont autorisés comme une continuation de l'identifiant. De plus, nous pouvons utiliser: décimal_numbers code> ( ND code>), qui sont en fait des chiffres de 0 à 9, mais dans de nombreuses guises, par exemple mathématique monospace chiffre neuf < / code>, qui est le caractère \ u0001d7ff code> (tous ensemble 70 caractères); la plupart des marques ( m code>), à l'exception des marques enfermantes ( moi code>) - Nous avons ici tous les diacritiques (accents); Tous les caractères du sous-groupe PC CODE> - Connecteurs de ponctuation, donc non seulement de soulignement, mais également divers liens (10 caractères); certains caractères similaires de type chiffre (par exemple les chiffres éthiopiques de 0 à 9); points moyens (2 caractères). P>
Comme vu de ce qui précède, n code> avec un indice 0 code> doit être accepté comme identifiant. Lorsque j'ai essayé de la coller de Word, l'inactivité et l'aile 101 ont inséré les formes normalisées dans l'éditeur (I.e. N0 code>). Je soupçonne que l'auteur de la question ait essayé d'utiliser un caractère d'indice qui ne pouvait pas être correctement normalisé. P>
Je ne comprends pas cette réponse. Il existe exactement un indice Zero dans Unicode et il n'est pas autorisé dans un identifiant Python.
FWIW, je trouve aussi étrange qu'une langue avec une forteresse en conserve scientifique permet aux identificateurs "chiffre romain cinq", "arabic-indicateur chiffre cinq", "élargi arabe-indicateur chiffre cinq", "Devanagari Digit Cinq", "Bengali DIGIT CINQ "," GURMUKHI DIGIT CINQ ", <20 AUTRES 5 D'AUTRES>," FULLWIDTH DIGIT CINQ "- mais pas un indice" 5 ". Surtout «FULLWIDTH» n'est pas une langue à sa propre mais une variante de lettre, de même que l'indice. En outre, "ℌ" ou "ℂ" sont aussi de simples variantes, mais elles sont autorisées.