Saltar al contenido

¿Qué significa dos puntos iguales (: =) en Python?

Solución:

PEP572 propuso apoyo para la := operador en Python para permitir asignaciones de variables dentro de expresiones.

Esta sintaxis está disponible en Python 3.8.

Respuesta actualizada

En el contexto de la pregunta, estamos tratando con pseudocódigo, pero comenzando en Python 3.8, := es en realidad un operador válido que permite la asignación de variables dentro de expresiones:

# Handle a matched regex
if (match := pattern.search(data)) is not None:
    # Do something with match

# A loop that can't be trivially rewritten using 2-arg iter()
while chunk := file.read(8192):
   process(chunk)

# Reuse a value that's expensive to compute
[y := f(x), y**2, y**3]

# Share a subexpression between a comprehension filter clause and its output
filtered_data = [y for x in data if (y := f(x)) is not None]

Consulte PEP 572 para obtener más detalles.

Respuesta original

Lo que has encontrado es pseudocódigo

Pseudocódigo es una descripción informal de alto nivel del principio operativo de un programa informático u otro algoritmo.

:= es en realidad el operador de asignación. En Python esto es simplemente =.

Para traducir este pseudocódigo a Python, necesitaría conocer las estructuras de datos a las que se hace referencia y un poco más de la implementación del algoritmo.

Algunas notas sobre psuedocode:

  • := es el operador de asignación o = en Python
  • = es el operador de igualdad o == en Python
  • Hay ciertos estilos y su millaje puede variar:

Estilo Pascal

procedure fizzbuzz
For i := 1 to 100 do
    set print_number to true;
    If i is divisible by 3 then
        print "Fizz";
        set print_number to false;
    If i is divisible by 5 then
        print "Buzz";
        set print_number to false;
    If print_number, print i;
    print a newline;
end

Estilo C

void function fizzbuzz
For (i = 1; i <= 100; i++) {
    set print_number to true;
    If i is divisible by 3
        print "Fizz";
        set print_number to false;
    If i is divisible by 5
        print "Buzz";
        set print_number to false;
    If print_number, print i;
    print a newline;
}

Tenga en cuenta las diferencias en el uso de corsé y el operador de asignación.

El código de la pregunta es un pseudocódigo; allí, := representa asignación.

Sin embargo, para los visitantes futuros, lo siguiente podría ser más relevante: la próxima versión de Python (3.8) obtendrá un nuevo operador, :=, permitiendo expresiones de asignación (Se pueden encontrar detalles, ejemplos motivadores y discusión en PEP 572, que fue aceptado provisionalmente a fines de junio de 2018).

Con este nuevo operador, puede escribir cosas como estas:

if (m := re.search(pat, s)):
    print m.span()
else if (m := re.search(pat2, s):
    …

while len(bytes := x.read()) > 0:
    … do something with `bytes`

[stripped for l in lines if len(stripped := l.strip()) > 0]

en lugar de estos:

m = re.search(pat, s)
if m:
    print m.span()
else:
    m = re.search(pat2, s)
    if m:
        …

while True:
    bytes = x.read()
    if len(bytes) <= 0:
        return
    … do something with `bytes`

[l for l in (l.stripped() for l in lines) if len(l) > 0]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *