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

282
Views
¿Qué son las "palabras clave blandas"?

Según la documentación del módulo de keyword , se han agregado dos nuevos miembros en Python 3.9:

  • issoftkeyword
  • softkwlist

Sin embargo, su documentación no revela nada sobre su propósito. Este cambio ni siquiera se menciona en el artículo Novedades , donde normalmente se documentan todos los cambios de la API. Profundizar un poco más en el código fuente finalmente conduce a esta solicitud de incorporación de cambios en la que se menciona que "esencialmente se trata de una herramienta interna" y que "todavía no se utilizan palabras clave blandas" . Entonces, ¿cuál es el propósito de las palabras clave blandas de Python?

over 4 years ago · Hanz Gallego
3 answers
Answer question

0

Breve: las palabras clave blandas aún se pueden usar como nombres de variables o argumentos.

PEP 622 arroja algo de luz (Énfasis mío):

La diferencia entre las palabras clave duras y blandas es que las palabras clave duras siempre son palabras reservadas, incluso en posiciones donde no tienen sentido (por ejemplo, x = clase + 1), mientras que las palabras clave blandas solo obtienen un significado especial en contexto.

[...] Las palabras clave de coincidencia y caso se proponen como palabras clave blandas , de modo que se reconozcan como palabras clave al comienzo de una declaración de coincidencia o bloque de caso respectivamente, pero se permite su uso en otros lugares como nombres de variables o argumentos .

over 4 years ago · Hanz Gallego Report

0

Las palabras clave blandas son palabras clave que son sensibles al contexto. Por ejemplo, le permitiría usar class como nombre de variable siempre que no se pueda interpretar como una definición de clase. Permitiría usar para reemplazar cls con class por ejemplo.

Hoy eso no es posible, ya que class es una palabra clave:

 >>> def a(class): File "<stdin>", line 1 def a(class): ^

Dado el contexto, está claro que el usuario no tenía la intención de definir una nueva clase, sino que quería un identificador llamado class .

over 4 years ago · Hanz Gallego Report

0

Creo que esto se explica mejor con una demostración. async y await eran palabras clave blandas en Python 3.5 y 3.6 y, por lo tanto, podían usarse como identificadores:

 >>> async = "spam" >>> async def foo(): ... pass ... >>> await = "bar" >>> async, await ('spam', 'bar')

Pero en Python 3.7 se convirtieron en palabras clave adecuadas y solo se pueden usar en contextos específicos donde tienen sentido:

 >>> async = "123" File "<stdin>", line 1 async = "123" ^ SyntaxError: invalid syntax >>> async def foo(): ... pass ... >>> await = "bar" File "<stdin>", line 1 await = "bar" ^ SyntaxError: invalid syntax >>> async, await File "<stdin>", line 1 async, await ^ SyntaxError: invalid syntax

La idea de presentarlas por primera vez como palabras clave blandas fue principalmente no romper ningún código existente que las use como identificadores. El mismo razonamiento es con la próxima palabra clave de match que rompería por completo, por ejemplo re.match y millones de proyectos.

over 4 years ago · Hanz Gallego 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!