Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

281
Vistas
¿Puedo importar los literales de cadena con formato de Python 3.6 (f-strings) a Python 3.x, 2.x más antiguo?

Las nuevas cuerdas f de Python 3.6 me parecen un gran salto en la usabilidad de las cuerdas, y me encantaría participar y adoptarlas de todo corazón en nuevos proyectos que podrían estar ejecutándose en intérpretes más antiguos. El soporte de 2.7, 3.3-3.5 sería excelente, pero al menos me gustaría usarlos en las bases de código de Python 3.5. ¿Cómo puedo importar los literales de cadena con formato de 3.6 para que los usen los intérpretes más antiguos?

Entiendo que los literales de cadena formateados como f"Foo is {age} {units} old" no están rompiendo cambios, por lo que no se incluirían en una from __future__ import ... . Pero el cambio no es retroportado (AFAIK) Tendría que asegurarme de que cualquier código nuevo que escriba con f-strings solo se ejecute en Python 3.6+, que es un factor decisivo para muchos proyectos.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

future-fstrings incorpora f-strings a los scripts de Python 2.7. (Y asumo 3.3-3.5 según la documentación).

Una vez que lo instale pip a través pip install future-fstrings , debe colocar una línea especial en la parte superior de su código. Esa línea es:

 # -*- coding: future_fstrings -*-

Luego puede usar literales de cadena con formato (f-strings) dentro de su código:

 # -*- coding: future_fstrings -*- var = 'f-string' print(f'hello world, this is an {var}')
over 4 years ago · Santiago Trujillo Denunciar

0

Desafortunadamente, si desea usarlo, debe requerir Python 3.6+ , lo mismo con el operador de multiplicación de matrices @ y Python 3.5+ o yield from ( Python 3.4+ , creo)

Estos hicieron cambios en la forma en que se interpreta el código y, por lo tanto, generan SyntaxErrors cuando se importan en versiones anteriores. Eso significa que debe colocarlos en algún lugar donde no se importen en Pythons más antiguos o estén protegidos por un eval o exec (¡no recomendaría los dos últimos!).

Entonces, sí, tiene razón, si desea admitir varias versiones de Python, no puede usarlas fácilmente.

over 4 years ago · Santiago Trujillo Denunciar

0

esto es lo que uso:

 text = "Foo is {age} {units} old".format(**locals())

desempaqueta ( ** ) el dict devuelto por locals() que tiene todas sus variables locales como dict {variable_name: value}

Tenga en cuenta que esto no funcionará para las variables declaradas en un ámbito externo, a menos que lo importe al ámbito local con nonlocal (Python 3.0+).

también puedes usar

 text.format(**locals(),**globals())

para incluir variables globales en su cadena.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda