Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
El caso de coincidencia de Python muestra un error con el elemento de lista como caso. Esperado ":"

Hola, estaba usando la función Match Case recién agregada, pero me encontré con este problema.

Aquí está mi código:

 from typing import List class Wee(): def __init__(self) -> None: self.lololol: List[str] = ["car", "goes", "brrrr"] def func1(self): self.weee = input() try: match self.weee: case self.lololol[0]: print(self.lololol[0]) case self.lololol[1]: print(self.lololol[1]) case _: print(self.lololol[2]) except SyntaxError as e: print(e) waa = Wee() waa.func1()

En las líneas 11 y 13, aparecen errores que dicen SyntaxError: expected ':' . Sin embargo, cuando cambio case self.lololol[0]: a case "car": , los errores desaparecen. ¿Qué está pasando?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

No puede usar expresiones arbitrarias como patrones (ya que a veces sería ambiguo), solo un cierto subconjunto .

Si desea hacer coincidir los elementos de una lista, probablemente debería, dependiendo de la situación, convertirlos en variables separadas o usar list.index .

over 4 years ago · Santiago Trujillo Report

0

Esto se debe a que la declaración de case de match está destinada a la coincidencia estructural . Específicamente PEP 635 dice:

Aunque los patrones pueden parecer superficialmente expresiones, es importante tener en cuenta que existe una distinción clara. De hecho, ningún patrón es o contiene una expresión. Es más productivo pensar en patrones como elementos declarativos similares a los parámetros formales en una definición de función.

Específicamente, las variables simples se usan como patrones de captura y no como patrones de coincidencia (definitivamente no es lo que un programador de C/C++ podría esperar...) y funciones o subíndices o simplemente no están permitidos.

Desde un punto de vista práctico, solo las expresiones literales o punteadas se pueden usar como patrones coincidentes.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!