logo

Guió baix (_) a Python

En aquest article, veurem el guió baix (_) a Python.

A continuació es mostren diferents llocs on _ s'utilitza a Python:

  • Guió baix únic:
    • Guió baix únic en intèrpret
    • Guió baix únic després d'un nom
    • Guió baix únic abans d'un nom
    • Guió baix únic en literals numèrics
  • Doble guió baix:
    • Doble guió baix abans d'un nom
    • Doble subratllat abans i després d'un nom

Guió baix únic

Exemple 1: Guió baix únic a l'intèrpret:

_ retorna el valor de l'últim valor de l'expressió executada a l'indicador/intèrpret de Python



Exemple 2: Guió baix únic per ignorar valors

Diverses vegades no volem que els valors de retorn en aquell moment assignin aquests valors al guió baix. S'utilitza com a variable de llençar.

Python 3




# Ignore a value of specific location/index> for> _>in> range>(>10>)> >print> (>'Test'>)> # Ignore a value when unpacking> a,b,_,_>=> my_method(var1)>

>

pagament a git

>

Exemple 3: Guió baix únic després d'un nom

Python té les seves paraules clau per defecte que no podem utilitzar com a nom de variable. Per evitar aquest conflicte entre la paraula clau de Python i la variable, utilitzem el guió baix després del nom

Python 3




class> MyClass():> >def> __init__(>self>):> >print>(>'OWK'>)> def> my_definition(var1>=>1>,>class_>=>MyClass):> >print>(var1)> >print>(>class_>)> my_definition()>

>

>

Sortida:

1>

Exemple 4: Guió baix únic abans d'un nom

Guió baix principal abans variable / funció / nom del mètode indica al programador que és només per a ús intern, que es pot modificar sempre que la classe vulgui. Aquí el prefix del nom amb un guió baix es tracta com a no públic. Si s'especifica d'importació * tots els noms que comencen per _ no s'importaran. Python no especifica realment privat, de manera que aquest es pot cridar directament des d'altres mòduls si s'especifica a __all__, també l'anomenem privat feble

Python 3




class> Prefix:> >def> __init__(>self>):> >self>.public>=> 10> >self>._private>=> 12> test>=> Prefix()> print>(test.public)> print>(test._private)>

>

>

10 12>

Exemple 5: guió baix únic en literals numèrics

La sintaxi de Python s'utilitza de manera que els guions baixos es poden utilitzar com a separadors visuals per motius d'agrupació de dígits per augmentar la llegibilitat. Aquesta és una característica típica de la majoria dels idiomes actuals i pot ajudar a la llegibilitat de literals llargs, o literals el valor dels quals s'hauria de separar clarament en porcions.

Python 3




# grouping decimal for easy readability of long literals> amount>=> 10_000_000>.>0> # grouping hexadecimal for easy readability of long literals> addr>=> 0xCAFE_F00D> # grouping bits for easy readability of long literals> flags>=> 0b_0011_1111_0100_1110>

>

angles adjacents

>

Doble guió baix abans d'un nom

El guió baix doble inicial indica a l'intèrpret de Python que reescrigui el nom per tal d'evitar conflictes en una subclasse. L'intèrpret canvia el nom de la variable amb l'extensió de classe i aquesta característica coneguda com Mangling.

Python 3




class> Myclass():> >def> __init__(>self>):> >self>.__variable>=> 10>

>

>

Trucada de l'intèrpret

testFile.py

L'intèrpret de Python modifica el nom de la variable amb ___. Així que diverses vegades s'utilitza com a membre privat perquè una altra classe no pot accedir directament a aquesta variable. L'objectiu principal de __ és utilitzar variable /method només a la classe Si el voleu utilitzar fora de la classe, podeu fer-lo públic.

Python 3




class> Myclass():> >def> __init__(>self>):> >self>.__variable>=> 10> >def> func(>self>)> >print>(>self>.__variable)>

>

>

Trucada de l'intèrpret

Doble subratllat abans i després d'un nom

El nom comença amb __ i acaba amb el mateix tenint en compte els mètodes especials de Python. Python proporciona aquests mètodes per utilitzar-los com a operador de sobrecàrrega en funció de l'usuari. Python proporciona aquesta convenció per diferenciar entre la funció definida per l'usuari i la funció del mòdul

Python 3




class> Myclass():> >def> __add__(>self>,a,b):> >print> (a>*>b)>

>

comparar amb java
>

Trucada de l'intèrpret