En este artículo, veremos el guión bajo (_) en Python.
A continuación se muestran diferentes lugares donde _ se usa en Python:
- Subrayado simple:
- Guión bajo único en intérprete
- Guión bajo único después de un nombre
- Guión bajo único antes de un nombre
- Guión bajo único en literales numéricos
- Doble subrayado:
- Doble guión bajo antes de un nombre
- Doble guión bajo antes y después de un nombre
Subrayado simple
Ejemplo 1: guión bajo único en intérprete:
_ devuelve el valor de la última expresión ejecutada en Python Prompt/Interpreter
Ejemplo 2: guión bajo único para ignorar valores
Varias veces no queremos que los valores devueltos en ese momento asigne esos valores al guión bajo. Se utiliza como variable desechable.
Python3
# Ignore a value of specific location/index> for> _> in> range> (> 10> )> > print> (> 'Test'> )> # Ignore a value when unpacking> a,b,_,_> => my_method(var1)> |
>
>
Ejemplo 3: guión bajo único después de un nombre
Python tiene sus palabras clave predeterminadas que no podemos usar como nombre de variable. Para evitar este tipo de conflicto entre la palabra clave de Python y la variable, utilizamos un guión bajo después del nombre.
Python3
establecido en java
class> MyClass():> > def> __init__(> self> ):> > print> (> 'OWK'> )> def> my_definition(var1> => 1> ,> class_> => MyClass):> > print> (var1)> > print> (> class_> )> my_definition()> |
>
>
Producción:
1>
Ejemplo 4: guión bajo único antes de un nombre
Guión bajo inicial antes variable / función / nombre del método indica al programador que es sólo para uso interno, que puede modificarse cuando la clase lo desee. Aquí el prefijo de nombre con guión bajo se trata como no público. Si especifica de Importación * todos los nombres que comiencen con _ no se importarán. Python no especifica verdaderamente privado, por lo que se puede llamar directamente desde otros módulos si se especifica en __all__. También lo llamamos débil privado
Python3
ls comandos linux
class> Prefix:> > def> __init__(> self> ):> > self> .public> => 10> > self> ._private> => 12> test> => Prefix()> print> (test.public)> print> (test._private)> |
>
>
10 12>
Ejemplo 5: guión bajo único en literales numéricos
La sintaxis de Python se utiliza de manera que los guiones bajos se puedan utilizar como separadores visuales por motivos de agrupación de dígitos para mejorar la legibilidad. Esta es una característica típica de la mayoría de los lenguajes actuales y puede ayudar a mejorar la legibilidad de literales largos, o literales cuyo valor debe estar claramente separado en porciones.
Python3
# 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> |
>
>
Doble guión bajo antes de un nombre
El doble guión bajo inicial le indica al intérprete de Python que reescriba el nombre para evitar conflictos en una subclase. El intérprete cambia el nombre de la variable con la extensión de clase y esa característica conocida como Mangling.
Python3
class> Myclass():> > def> __init__(> self> ):> > self> .__variable> => 10> |
>
>
Llamando desde el intérprete
testFile.py
El intérprete de Python modifica el nombre de la variable con ___. Entonces, varias veces se usa como miembro privado porque otra clase no puede acceder a esa variable directamente. El objetivo principal de __ es utilizar variable /método solo en clase Si quieres usarlo fuera de la clase puedes hacerlo público.
Python3
class> Myclass():> > def> __init__(> self> ):> > self> .__variable> => 10> > def> func(> self> )> > print> (> self> .__variable)> |
cadena c en matriz
>
>
Llamando desde el intérprete
Doble guión bajo antes y después de un nombre
El nombre comienza con __ y termina con lo mismo considerando métodos especiales en Python. Python proporciona estos métodos para usarlos como operador de sobrecarga según el usuario. Python proporciona esta convención para diferenciar entre la función definida por el usuario y la función del módulo.
Python3
class> Myclass():> > def> __add__(> self> ,a,b):> > print> (a> *> b)> |
>
>
Llamando desde el intérprete