Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

283
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda