In questo articolo, tratteremo cosa fanno ** (doppia stella/asterisco) e * (stella/asterisco) per i parametri in Pitone , Qui tratteremo anche esempi di args e kwargs in Python. Possiamo passare un numero variabile di argomenti a una funzione utilizzando simboli speciali.
bash per i cicli da 1 a 10
Ci sono due simboli speciali:
*args e **kwargs in Python
Simboli speciali utilizzati per passare argomenti in Python:
- *args (Argomenti non basati su parole chiave)
- **kwargs (argomenti di parole chiave)
Nota: Usiamo il carattere jolly o la notazione * come questa – *args OR **kwargs – come argomento della nostra funzione quando abbiamo dubbi sul numero di argomenti che dovremmo passare in una funzione.
Cos'è Python *args?
La sintassi speciale *arg nelle definizioni di funzioni in Python viene utilizzato per passare un numero variabile di argomenti a una funzione. Viene utilizzato per passare un elenco di argomenti senza parole chiave e di lunghezza variabile.
- La sintassi prevede l'utilizzo del simbolo * per accogliere un numero variabile di argomenti; per convenzione viene spesso utilizzato con la parola args.
- Che cosa *arg ti consente di accettare più argomenti rispetto al numero di argomenti formali definiti in precedenza. Con *arg , è possibile aggiungere un numero qualsiasi di argomenti aggiuntivi ai parametri formali correnti (inclusi zero argomenti aggiuntivi).
- Ad esempio, vogliamo creare una funzione di moltiplicazione che accetta un numero qualsiasi di argomenti ed è in grado di moltiplicarli tutti insieme. Può essere fatto usando *args.
- Usando *, la variabile che associamo a * diventa iterabile, il che significa che puoi fare cose come iterare su di essa, eseguire alcune funzioni di ordine superiore come mappa e filtro, ecc.
Esempio 1:
Programma Python per illustrare *args per un numero variabile di argomenti
pitone def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')> Produzione:
Hello Welcome to techcodeview.com>
Esempio 2:
Programma Python per illustrare *args con un primo argomento aggiuntivo
Python3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')> Produzione:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Cos'è Python **kwargs?
La sintassi speciale **kwargs nelle definizioni di funzioni in Python viene utilizzato per passare un elenco di argomenti di lunghezza variabile con parole chiave. Usiamo il nome kwargs con la doppia stella. Il motivo è che la doppia stella ci consente di passare attraverso gli argomenti delle parole chiave (e un numero qualsiasi di essi).
- Un argomento con parola chiave è il luogo in cui fornisci un nome alla variabile mentre la passi alla funzione.
- Si può pensare a kwargs come un dizionario che associa ciascuna parola chiave al valore che le passiamo accanto. Questo è il motivo per cui quando iteriamo sul file kwargs non sembra esserci alcun ordine in cui sono stati stampati.
Esempio 1:
cosa è autowired in Java
Programma Python per illustrare *kwargs per un numero variabile di argomenti di parole chiave. Qui **kwargs accetta argomenti di lunghezza variabile con parole chiave passati dalla chiamata di funzione. for first='Geeks' first è la chiave e 'Geeks' è un valore. in parole semplici, ciò che assegniamo è valore e a chi lo assegniamo è la chiave.
Pitone def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')> Produzione:
first == Geeks mid == for last == Geeks>
Esempio 2:
Programma Python per illustrare **kwargs per un numero variabile di argomenti di parole chiave con un argomento aggiuntivo. Comunque, ma un cambiamento è che passiamo un argomento non-parola chiave accettabile dall'argomento posizionale (arg1 in myFun). e gli argomenti delle parole chiave che passiamo sono accettabili da **kwargs. semplice vero?
Pitone def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')> Produzione:
first == Geeks mid == for last == Geeks>
Usare sia *args che **kwargs in Python per chiamare una funzione
Esempio 1:
Qui stiamo passando *args e **kwargs come argomento nella funzione myFun. Passare *args a myFun significa semplicemente passare gli argomenti posizionali e di lunghezza variabile contenuti in args. quindi, i Geek passano all'arg1, quindi passano all'arg2, e i Geek passano all'arg3. Quando passiamo **kwargs come argomento a myFun significa che accetta argomenti con parole chiave. Qui, arg1 è la chiave e il valore è Geeks che viene passato ad arg1, e proprio così for e Geeks passano rispettivamente ad arg2 e arg3. Dopo aver passato tutti i dati, stiamo stampando tutti i dati in righe.
inizia con Javapitone
def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)> Produzione:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Esempio 2:
Qui stiamo passando *args e **kwargs come argomento nella funzione myFun. Dove 'geek', 'per', 'geek' viene passato come *args e first=Geek, mid=for, last=Geek viene passato come **kwargs e printing nella stessa linea.
pitone def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')> Produzione:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>Utilizzo di *args e **kwargs in Python per impostare i valori dell'oggetto
- *args riceve argomenti come a tupla .
- **kwargs riceve argomenti come a dizionario .
Esempio 1: utilizzo di Python *args
Pitone # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>
Produzione:
red 250>
Esempio 2: utilizzo di Python **kwargs
Pitone # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>
Produzione:
red 250>