¿Qué hace * en Python?

Un operador de asterisco (*) en Python es bastante poderoso y puede hacer muchas cosas. En esta publicación, descubriremos sus poderes. Entonces, sin más preámbulos, comencemos.

 

Multiplicación y Poder

El operador * puede multiplicar dos números. Si usamos asteriscos dobles (**) entre operandos, entonces realizará el cálculo exponencial (potencia). Por ejemplo, 3**2 = 9, es decir, calcula 3 elevado a 2. Veamos sus ejemplos.



 

x = 4
y = 5
product = x*y #* as a multiplication operator
power = x**3 #* to calculate power
print(product, power)

 

Producción

 

20 64

 

Repetición

Cuando el operador * se usa entre un iterable (lista, cadena, etc.) y un entero X , repite esa secuencia por x-1 veces. Considere el siguiente ejemplo.

 

x = 4
lst = [2]*x #repeats 2 in the list x-1 times
print(lst)
string = "abc"*x #repeats abc x-1 times
print(string)

 

Producción

 

[2, 2, 2, 2]
abcabcabcabc

 

Desempaquetando iterables y diccionarios

El operador de desempaquetado * puede desempaquetar un iterable. Para diccionarios, utilice **. Vamos a ver.

 

list1 = ["football", "basketball", "cricket"]
list2 = ["hockey", "volleyball"]
sports = [*list1, *list2] #unpacking list1 and list2 to merge them into a new list
print(sports)

 

Producción

['football', 'basketball', 'cricket', 'hockey', 'volleyball']

 

Considere otro ejemplo.

list1 = ["football", "basketball", "cricket"]
first, *others = list1
print("The first item:", first)
print("Rest of the items:", others)

 

Producción

The first item: football
Rest of the items: ['basketball', 'cricket']

 

Veamos cómo descomprimir diccionarios.

#unpacking dictionaries
dictt1 = {"name":"Ashton", "age": 25}
dictt2 = {"cpga": 4.5}
dictt = {**dictt1, **dictt2}
print(dictt)

 

Producción

{'name': 'Ashton', 'age': 25, 'cpga': 4.5}

 

Desempaquetar iterables en una llamada de función

Si queremos pasar elementos de un iterable (listas, cadenas) por separado como argumentos a una función, puede hacerlo usando el operador *. Considere el siguiente ejemplo.

 

name = "ashton agar"
print("The letters in the string are:", *name)

 

Producción

 

The letters in the string are: a s h t o n   a g a r

 

Número variable de argumentos posicionales

El operador * le permite pasar cualquier número de argumentos posicionales a una función. Además, estos argumentos se pasan como una tupla. Vamos a ver.

 

def calculateAverage(*values):
  n = len(values)
  summ =0 
  for i in range(0, n):
    summ += values[i]
  
  return summ/n
avg = calculateAverage(2,6, 7, 8, 8)
print("The average is:", avg)

 

Producción

 

The average is: 6.2

 

En el ejemplo anterior, creamos una función para calcular el promedio de los números que se le pasan. Puede observar aquí que no estamos limitando los argumentos que se le pasan. Hacemos eso usando el operador asterisco.

 

Número variable de argumentos de palabras clave

Mientras que el operador * nos permite pasar cualquier cantidad de argumentos posicionales, el operador ** se puede usar para pasar una cantidad variable de argumentos de palabras clave. Vamos a ver.

 

def test(**info):
  print(info)
test(name="Ashton", age=3)

 

Producción

 

{'name': 'Ashton', 'age': 3}

 

Parámetro de solo palabra clave

Si desea tener un parámetro de solo palabra clave en su función, puede usar * para hacerlo. Considere el siguiente ejemplo para ver cómo.

 

def test(name, age, *, grade):
  print(name, age, grade)
test("ashton", 18, grade=9)

 

Producción

 

ashton 18 9

 

En el ejemplo anterior, el prueba() La función toma tres argumentos. Variables nombre y años son posicionales, pero calificación es un argumento de solo palabra clave.

 

def test(name, age, *, grade):
  print(name, age, grade)
test("ashton", 18, 9)

 

Producción

  ¿Qué hace * en Python?

¿Qué hace * en Python?

Como puede ver, obtiene un error cuando no pasa el argumento de la palabra clave correctamente.

Hemos visto que el operador * tiene muchos significados. Entonces, los animo a que jueguen con él para entenderlo mejor.