0407 Modifier
Je suis désolé pour le post pour les débutants, mais je crois qu'il y a des débutants qui sont également troublés.
Pourquoi ne sortez-vous pas après avoir lu le code ou le livre de référence d'une personne? ** Ce underbar n'est-ce pas! Underbar comme _ **
python
H,W,_ = img.shape
Ou d'abord
python
__main__
Pourquoi y a-t-il une barre inférieure? Comme. Cette fois, c'est une telle histoire.
J'ai trouvé un article divin alors que je m'inquiétais aussi cette fois-ci, alors je vais l'étoffer et le mâcher en me basant sur lui. Cliquez ici pour l'article sur Dieu qui a résolu vos soucis
[Maîtrisons le trait de soulignement (_) de "Pythonic divers" Python!](Https://medium.com/lsc-psd/pythonic%E8%89%B2%E3%80%85-python%E3%81% AE% E3% 82% A2% E3% 83% B3% E3% 83% 80% E3% 83% BC% E3% 82% B9% E3% 82% B3% E3% 82% A2-% E3% 82% 92 % E4% BD% BF% E3% 81% 84% E3% 81% 93% E3% 81% AA% E3% 81% 9D% E3% 81% 86-3c132842eeef)
python
H,W,_ = img.shape
C'est exactement ce que j'ai donné dans le premier exemple. Ça y est. .. .. Cela ignore la troisième valeur de retour de .shape-underscore Cité parce que la source de la citation a expliqué l'excès et la carence Dit
Python a de nombreuses bibliothèques, et j'importe et j'utilise souvent des fonctions. Dans ce cas, s'il existe plusieurs valeurs de retour de la fonction et qu'une partie n'est pas utilisée, vous pouvez utiliser le trait de soulignement et le supprimer sans occuper la mémoire de la valeur de retour.
Avec cela, vous pouvez créer un programme sans utiliser de mémoire gaspillée. Cela semble être le plus utilisé.
Il semble qu'il existe quatre types en fonction de l'emplacement. De plus, il est défini dans la norme de codage PEP8. Je ne savais même pas qu'il y avait une telle définition. https://www.python.org/dev/peps/pep-0008/
Elle est décrite en détail dans PEP8> Convention de dénomination. Ensuite, je résumerai les quatre suivants
python
def _single_leading_underscore(x):
return n
#weak "internal use" indicator. E.g. from M import *
#does not import objects whose names start with an underscore.
Si vous l'écrivez comme ceci, il ne sera pas appelé par func import * depuis un autre endroit, mais il semble que vous puissiez appeler une fonction avec un trait de soulignement comme fonction dans une classe comme classx._func (). Fondamentalement, il semble être la pratique de python de ne pas accepter les références externes, mais d'y ajouter un trait de soulignement. Est-ce aussi une mesure de lecture?
python
def list_(x):
return n
#used by convention to avoid conflicts with Python keyword
Si vous souhaitez utiliser les mots réservés de python tels que liste et classe dans le nom de la fonction, ajoutez un _ à la fin.
python
def __double_leading_underscore:
return n
#when naming a class attribute, invokes name mangling
#(inside class FooBar, __boo becomes _FooBar__boo; see below).
Le fait de précéder une fonction dans une classe avec deux traits de soulignement appellera le ** mangling ** nommé. Mangling signifie modification de nom, et en bref, il semble qu'il ne soit pas traité comme ordinaire en interne. Comme indiqué dans l'exemple ci-dessus, la variable \ _ \ _boo de la classe FooBar ne peut pas être appelée par FooBar. \ _ \ _Boo, et ne peut être appelée que par \ _FooBar \ _ \ _boo. Cela n'accepte pas non plus l'accès de l'extérieur et je pense que cela peut être considéré comme l'une des contre-mesures.
python
def __double_leading_and_trailing_underscore__:
return n
# "magic" objects or attributes that live in user-controlled
# namespaces. E.g. __init__, __import__ or __file__. Never invent
# such names; only use them as documented.``
Si vous ajoutez deux traits de soulignement avant et après la fonction dans la classe, cela devient Magic Method (méthode spéciale). C'est une histoire sur des méthodes spéciales, mais il semble qu'elles soient utilisées lorsque vous voulez changer le comportement d'un objet ou le faire bouger selon la nature de la classe. Par exemple, \ _ \ _ init \ _ \ _ utilise l'argument passé. Il initialise un objet nouvellement créé dans la définition de classe. Il existe de nombreuses méthodes magiques. C'est sur la liste, mais c'est plein http://www.ops.dti.ne.jp/ironpython.beginner/method.html
python
>>> 1_000_000
Out: 1000000
[Référence](https://medium.com/lsc-psd/pythonic%E8%89%B2%E3%80%85-python%E3%81%AE%E3%82%A2%E3%83%B3% E3% 83% 80% E3% 83% BC% E3% 82% B9% E3% 82% B3% E3% 82% A2-% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3 % 81% 93% E3% 81% AA% E3% 81% 9D% E3% 81% 86-3c132842eeef)
À partir de Python 3.6, vous pouvez ajouter un trait de soulignement au nombre pour le rendre plus facile à lire. Vous pouvez réaliser une virgule tous les 3 chiffres qui sont couramment utilisés.
Il semble que même si vous tapez un trait de soulignement dans une valeur numérique au lieu d'une virgule tous les 3 chiffres, il sera reconnu comme une valeur numérique appropriée. C'est pratique lorsque vous souhaitez insérer un grand nombre de chiffres.
python
>>> 10
Out: 10
>>> _ * 3
Out: 30
>>> _ * 10
Out: 300
Je ne le savais pas, mais lors de l'utilisation de l'interpréteur python, il semble que vous puissiez obtenir le numéro affiché précédemment avec le trait de soulignement.
** Addendum 0406 ** Comme vous l'avez souligné dans le commentaire, si vous utilisez \ _ comme nom de variable, cela semble fonctionner comme un interpréteur pour afficher la valeur placée dans la variable au lieu de la valeur numérique précédemment affichée. Veuillez vous référer aux commentaires pour plus de détails. Cela donne un exemple facile à comprendre. Je vous remercie.
J'ai trouvé un site magnifiquement organisé Signification et utilisation de Python si \ _ \ _ nom \ _ \ _ == '\ _ \ _ main \ _ \ _'
Il semble que "le traitement ultérieur ne soit exécuté que lorsque le fichier correspondant est exécuté en tant que script depuis la ligne de commande". En d'autres termes, cela ne fonctionne pas lorsqu'il est appelé de quelque part
Quand je lis le code des autres, je sens qu'il est écrit pour montrer que c'est le principal.
Je veux écrire du beau code.
[Python Cheet Sheet] Méthode spéciale Comment mettre un trait de soulignement dans la notation markdown
Recommended Posts