logo

Cadena F en Python

En este tutorial, aprenderemos sobre el mecanismo de formato de cadenas. La cadena f es la mejor manera de formatear la cadena. El estilo de formato de la cadena hace que la cadena sea más legible, más concisa y menos propensa a errores. También es más rápido que el otro.

Antes de profundizar en este tema, primero discutiremos las técnicas que se utilizaron antes de la cuerda f.

Formato de cadenas antiguas en Python

Hay dos formas principales de formatear la cadena: % - formatear y str.formato(). Pero ambos métodos tienen algunas limitaciones. Hagamos una breve introducción de estos métodos dados.

1.% - formateo

Es una forma tradicional de formatear la cadena, pero los documentos recomiendan este método, que contiene la siguiente declaración.

'Las operaciones de formato que se describen aquí presentan una variedad de peculiaridades que conducen a varios errores comunes (como no mostrar correctamente las tuplas y los diccionarios).

Usando los literales de cadena formateados más nuevos o el str.formato() La interfaz ayuda a evitar estos errores.' - Documentación oficial .

los números del alfabeto

Cómo utilizar % - formato

Podemos realizar operaciones integradas utilizando el operador %. Entendamos el siguiente ejemplo.

 student = 'Michel' 'Hello, %s.' % student 

Producción:

 Hello Michel 

También podemos usar la tupla para almacenar las múltiples variables. Veamos el siguiente ejemplo.

 name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age) 

Producción:

 Hello Sharma You are 24. 

Por qué no se recomienda el formato %

Porque a medida que aumenta la variable y la cadena es más larga, nuestro código se vuelve mucho menos legible. El código parece desordenado. Veamos el siguiente ejemplo.

Ejemplo -

 first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)') 

Producción:

 Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel. 

Como podemos ver en el código anterior, el código se volvió difícil de leer y más propenso a errores. Por eso esta forma de formatear cadenas no es buena.

Método 2.str.format()

Es otra forma popular de formatear la cadena introducida en Python 2.6. Veamos cómo podemos usarlo.

Cómo utilizar str.format()

Es una mejora en el formato%. Es como una función incorporada normal llamada al objeto y ese objeto se convierte en una cadena.

Veamos el siguiente ejemplo.

Ejemplo -

 first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)') 

Para acceder al elemento del diccionario dentro del método de formato, podemos pasar la clave en el método format().

 person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age']) 

Producción:

 Hello Peter, You are 17 

¿Por qué no se recomienda el método str.format()?

str.format() es mucho más eficiente que el método %-format, pero aún puede ser bastante detallado cuando tratamos con múltiples parámetros.

Método de cuerda F

Es un nuevo mecanismo de formato de cadenas introducido por el PEP 498. También se conoce como interpolación de cadenas literales o más comúnmente como cadenas F. (carácter f que precede al literal de cadena). El objetivo principal de este mecanismo es facilitar la interpolación.

Cuando anteponemos la cadena con la letra 'F, la cadena se convierte en la propia cadena f. La cadena f se puede formatear de forma muy similar a la str.formato() método. La cadena F ofrece una manera conveniente de incrustar expresiones de Python dentro de cadenas literales para formatear.

Ejemplo -

 # Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.') 

Producción:

 Hello, My name is Tushar and I'm 28 years old. 

En el código anterior, hemos utilizado la cadena f para formatear la cadena. Se evalúa en tiempo de ejecución; podemos poner todas las expresiones válidas de Python en ellos.

Podemos usarlo en una sola declaración.

 print(f'{2 * 30})' 

Producción:

 60 

Sin embargo, podríamos usarlo en función.

 def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.' 

Producción:

 Sachin Tendulkar is great 

La cadena f también podría usarse con el objeto de clase. Entendamos el siguiente ejemplo.

Ejemplo -

 class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}') 

Producción:

 Keenu Reevs's superhit movie is Matrix. 

Explicación -

En el código anterior, hemos utilizado __str__() y __repr__(), que representan un objeto como una cadena. Entonces necesitamos incluir al menos uno de esos métodos en la definición de clase. La cadena f utilizará el método __str__(); ¡También podemos usar __repr__() incluyendo el indicador de conversión! r.

 print(f'{ac}') print(f'{ac}'!r) 

Producción:

 Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit 

Cuerda F en el Diccionario

Tenemos que tener cuidado al trabajar con claves de diccionario dentro de la cadena f. Hay una cita diferente para usar claves de diccionario y cadena f. Entendamos el siguiente ejemplo.

Ejemplo -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

Producción:

 John is 19 years old. 

El siguiente método no está permitido en caso de diccionario.

Ejemplo -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

Producción:

 File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax 

Como podemos ver en el código anterior, cambiamos una comilla doble a comillas simples y arroja un error.

Velocidad

La razón para adaptar este estilo de formato es su velocidad. La cadena f se evalúa en tiempo de ejecución en lugar de valores constantes. Incorpora expresiones dentro de cadenas literales, utilizando una sintaxis mínima. Es rápido porque evalúa en tiempo de ejecución, no un valor constante.

Veamos la siguiente comparación de cadenas.

Ejemplo 1:

 import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000)) 

Producción:

 0.0022497819736599922 

Ejemplo - 2:

 import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000)) 

Producción:

 0.0025783719611354172 

Ejemplo - 3:

 import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000)) 

Producción:

 0.0019360429723747075 

Como podemos observar, la cadena f está en la parte superior de la lista.

Tirantes

Para que aparezcan llaves en el código, debe utilizar comillas dobles de la siguiente manera. Entendamos el siguiente ejemplo.

Ejemplo -

 f'{{70 + 40}}' 

Producción:

 {70 + 40} 

Si usamos llaves triples, mostrará llaves simples en nuestra cadena. Entendamos el siguiente ejemplo.

Ejemplo -

 f'{{{90 + 4}}}' 

Producción:

 {94} 

Podemos mostrar más llaves si usamos más de llaves triples.

Ejemplo -

 f'{{{{70 + 4}}}}' 

Producción:

 {{70 + 4}} 

Barras invertidas

Podemos usar los escapes de barra invertida en la parte de cadena de una cadena f. Sin embargo, no podemos usar barras invertidas para escapar en la parte de expresión de una cadena f. Entendamos el siguiente ejemplo.

Ejemplo -

 f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}' 

Producción:

 SyntaxError: f-string expression part cannot include a backslash 

Comentarios en línea

No podemos incluir el símbolo # en la expresión. Lanzará un error de sintaxis. Entendamos el siguiente ejemplo.

Ejemplo -

 f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.' 

Producción:

 SyntaxError: f-string expression part cannot include '#' 

Conclusión

Podemos utilizar cualquiera de los tres métodos, pero el método f-string proporciona una forma más concisa, legible y conveniente. Es más rápido y menos propenso a errores. Hemos explicado casi todos los escenarios posibles fuera de la cadena y por qué se debería considerar este enfoque en la programación.