Τι κάνει το * στην Python;

Ένας τελεστής αστερίσκου (*) στην Python είναι αρκετά ισχυρός και μπορεί να κάνει πολλά πράγματα. Σε αυτήν την ανάρτηση, θα αποκαλύψουμε τις δυνάμεις του. Λοιπόν, χωρίς περαιτέρω καθυστέρηση, ας ξεκινήσουμε.

Πολλαπλασιασμός και Ισχύς

Ο τελεστής * μπορεί να πολλαπλασιάσει δύο αριθμούς. Αν χρησιμοποιήσουμε διπλούς αστερίσκους (**) μεταξύ των τελεστών, τότε θα εκτελέσει τον εκθετικό υπολογισμό (ισχύς). Για παράδειγμα, 3**2 = 9, δηλ. υπολογίζει το 3 στην ισχύ 2. Ας δούμε τα παραδείγματά τους.



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

Παραγωγή

20 64

Επανάληψη

Όταν ο τελεστής * χρησιμοποιείται ανάμεσα σε έναν επαναληπτικό (λίστα, συμβολοσειρά κ.λπ.) και έναν ακέραιο Χ , επαναλαμβάνει αυτή τη σειρά κατά x-1 φορές. Εξετάστε το ακόλουθο παράδειγμα.

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)

Παραγωγή

[2, 2, 2, 2]
abcabcabcabc

Αποσυσκευασία επαναληπτικών και λεξικών

Ο χειριστής αποσυσκευασίας * μπορεί να αποσυσκευάσει ένα επαναληπτικό. Για λεξικά, χρησιμοποιήστε **. Ας δούμε.

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

Παραγωγή

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

Εξετάστε ένα άλλο παράδειγμα.

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

Παραγωγή

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

Ας δούμε πώς να αποσυσκευάσουμε τα λεξικά.

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

Παραγωγή

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

Αποσυσκευασία επαναληπτικών σε μια κλήση συνάρτησης

Εάν θέλουμε να μεταβιβάσουμε στοιχεία ενός iterable (λίστες, συμβολοσειρά) ξεχωριστά ως ορίσματα σε μια συνάρτηση, μπορείτε να το κάνετε χρησιμοποιώντας τον τελεστή *. Εξετάστε το ακόλουθο παράδειγμα.

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

Παραγωγή

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

Διαφορετικός αριθμός επιχειρημάτων θέσης

Ο τελεστής * σάς επιτρέπει να μεταβιβάσετε οποιονδήποτε αριθμό ορισμάτων θέσης σε μια συνάρτηση. Επιπλέον, αυτά τα επιχειρήματα περνούν ως πλειάδα. Ας δούμε.

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)

Παραγωγή

The average is: 6.2

Στο παραπάνω παράδειγμα, δημιουργούμε μια συνάρτηση για τον υπολογισμό του μέσου όρου των αριθμών που μεταβιβάζονται σε αυτήν. Μπορείτε να παρατηρήσετε εδώ ότι δεν περιορίζουμε τα επιχειρήματα που διαβιβάζονται σε αυτό. Αυτό το κάνουμε χρησιμοποιώντας τον τελεστή αστερίσκου.

Διαφορετικός αριθμός ορισμάτων λέξεων-κλειδιών

Ενώ ο τελεστής * μας επιτρέπει να μεταβιβάσουμε οποιονδήποτε αριθμό ορισμάτων θέσης, ο τελεστής ** μπορεί να χρησιμοποιηθεί για τη μεταβίβαση ενός μεταβλητού αριθμού ορισμάτων λέξεων-κλειδιών. Ας δούμε.

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

Παραγωγή

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

Παράμετρος μόνο λέξη-κλειδί

Εάν θέλετε να έχετε μια παράμετρο μόνο λέξη-κλειδί στη συνάρτησή σας, μπορείτε να χρησιμοποιήσετε το * για να το κάνετε αυτό. Εξετάστε το ακόλουθο παράδειγμα για να δείτε πώς.

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

Παραγωγή

ashton 18 9

Στο παραπάνω παράδειγμα, το δοκιμή() η συνάρτηση παίρνει τρία ορίσματα. Μεταβλητές όνομα και ηλικία είναι θέσεις, αλλά Βαθμός είναι ένα όρισμα μόνο για λέξεις-κλειδιά.

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

Παραγωγή

  Τι κάνει το * στην Python;

Τι κάνει το * στην Python;

Όπως μπορείτε να δείτε, λαμβάνετε ένα σφάλμα όταν δεν μεταβιβάζετε σωστά το όρισμα της λέξης-κλειδιού.

Είδαμε ότι ο τελεστής * έχει πολλές έννοιες. Έτσι, θα σας παροτρύνω να παίξετε μαζί του για να το καταλάβετε καλύτερα.