Ką * veikia Python?

Žvaigždutės (*) operatorius Python yra gana galingas ir gali atlikti daugybę dalykų. Šiame įraše atskleisime jo galias. Taigi, nieko nelaukdami, pradėkime.

Daugyba ir galia

Operatorius * gali padauginti du skaičius. Jei tarp operandų naudosime dvigubas žvaigždutes (**), tada jis atliks eksponentinį (galios) skaičiavimą. Pavyzdžiui, 3**2 = 9, t.y. apskaičiuoja 3 laipsniui 2. Pažiūrėkime jų pavyzdžius.



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

Išvestis

20 64

Kartojimas

Kai operatorius * naudojamas tarp kartotinio (sąrašo, eilutės ir kt.) ir sveikojo skaičiaus x , ji pakartoja tą seką x-1 laikai. Apsvarstykite toliau pateiktą pavyzdį.

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)

Išvestis

[2, 2, 2, 2]
abcabcabcabc

Iterables ir žodynų išpakavimas

Išpakavimo operatorius * gali išpakuoti kartotinį. Žodynams naudokite **. Pažiūrėkime.

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

Išvestis

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

Apsvarstykite kitą pavyzdį.

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

Išvestis

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

Pažiūrėkime, kaip išpakuoti žodynus.

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

Išvestis

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

Iterables išpakavimas į funkcijos iškvietimą

Jei norime perduoti iteruojamo elemento elementus (sąrašus, eilutę) atskirai kaip argumentus funkcijai, tai galite padaryti naudodami operatorių *. Apsvarstykite toliau pateiktą pavyzdį.

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

Išvestis

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

Įvairus pozicinių argumentų skaičius

Operatorius * leidžia funkcijai perduoti bet kokį pozicijos argumentų skaičių. Be to, šie argumentai perduodami kaip eilutė. Pažiūrėkime.

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)

Išvestis

The average is: 6.2

Aukščiau pateiktame pavyzdyje sukuriame funkciją, skirtą apskaičiuoti jai perduotų skaičių vidurkį. Čia galite pastebėti, kad mes neribojame pateiktų argumentų. Tai darome naudodami žvaigždutės operatorių.

Įvairus raktinių žodžių argumentų skaičius

Nors operatorius * leidžia perduoti bet kokį pozicijos argumentų skaičių, ** operatorius gali būti naudojamas kintamam raktinių žodžių argumentų skaičiui perduoti. Pažiūrėkime.

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

Išvestis

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

Tik raktinio žodžio parametras

Jei savo funkcijoje norite turėti tik raktinio žodžio parametrą, galite tai padaryti naudodami *. Apsvarstykite toliau pateiktą pavyzdį, kad sužinotumėte, kaip tai padaryti.

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

Išvestis

ashton 18 9

Aukščiau pateiktame pavyzdyje testas () funkcijai reikalingi trys argumentai. Kintamieji vardas ir amžiaus yra poziciniai, bet laipsnis yra tik raktinio žodžio argumentas.

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

Išvestis

  Ką * veikia Python?

Ką * veikia Python?

Kaip matote, jei tinkamai nepateikiate raktinio žodžio argumento, gaunate klaidą.

Matėme, kad * operatorius turi daug reikšmių. Taigi, vaikinai, raginčiau jus pažaisti, kad geriau suprastumėte.