Argumente ale funcției Python (implicit, cuvânt cheie și arbitrar)

În Python, puteți defini o funcție care acceptă un număr variabil de argumente. În acest articol, veți învăța să definiți astfel de funcții folosind argumente implicite, cuvinte cheie și arbitrare.

Video: Argumente ale funcției Python: pozițional, cuvinte cheie și implicit

Argumente

În subiectul funcției definite de utilizator, am aflat despre definirea și apelarea unei funcții. În caz contrar, apelul funcțional va duce la o eroare. Iată un exemplu.

 def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")

Ieșire

 Bună Monica, Bună dimineața!

Aici, funcția greet()are doi parametri.

Deoarece am apelat această funcție cu două argumente, aceasta rulează fără probleme și nu primim nicio eroare.

Dacă îl numim cu un număr diferit de argumente, interpretul va afișa un mesaj de eroare. Mai jos este un apel la această funcție cu unul și fără argumente împreună cu mesajele de eroare respective.

 >>> greet ("Monica") # un singur argument TypeError: greet () lipsește 1 argument pozițional necesar: 'msg'
 >>> greet () # fără argumente TypeError: greet () lipsesc 2 argumente poziționale necesare: „nume” și „msg”

Argumente ale funcției variabile

Până în prezent, funcțiile aveau un număr fix de argumente. În Python, există alte modalități de a defini o funcție care poate lua un număr variabil de argumente.

Trei forme diferite de acest tip sunt descrise mai jos.

Argumente implicite Python

Argumentele funcției pot avea valori implicite în Python.

Putem furniza o valoare implicită unui argument utilizând operatorul de atribuire (=). Iată un exemplu.

 def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")

Ieșire

Bună Kate, Bună dimineața! Bună Bruce, ce mai faci?

În această funcție, parametrul namenu are o valoare implicită și este necesar (obligatoriu) în timpul unui apel.

Pe de altă parte, parametrul msgare o valoare implicită de "Good morning!". Deci, este opțional în timpul unui apel. Dacă este furnizată o valoare, aceasta va suprascrie valoarea implicită.

Orice număr de argumente dintr-o funcție poate avea o valoare implicită. Dar odată ce avem un argument implicit, toate argumentele din dreapta acestuia trebuie să aibă și valori implicite.

Aceasta înseamnă să spunem că argumentele non-implicite nu pot urma argumentele implicite. De exemplu, dacă am fi definit antetul funcției de mai sus ca:

 def salut (msg = "Bună dimineața!", nume):

Am primi o eroare ca:

 SyntaxError: argumentul non-implicit urmează argumentul implicit

Argumente ale cuvintelor cheie Python

Când apelăm o funcție cu unele valori, aceste valori sunt atribuite argumentelor în funcție de poziția lor.

De exemplu, în funcția de mai sus greet(), când am numit-o ca greet("Bruce", "How do you do?"), valoarea "Bruce"este atribuită numelui argumentului și similar "How do you do?"cu msg.

Python permite apelarea funcțiilor folosind argumente de cuvinte cheie. Când apelăm funcții în acest fel, ordinea (poziția) argumentelor poate fi modificată. Următoarele apeluri către funcția de mai sus sunt valabile și produc același rezultat.

 # 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?") 

După cum putem vedea, putem amesteca argumente poziționale cu argumente de cuvinte cheie în timpul unui apel funcțional. Dar trebuie să ținem cont de faptul că argumentele cuvintelor cheie trebuie să urmeze argumentele poziționale.

Dacă aveți un argument pozițional după argumentele cuvântului cheie, va rezulta erori. De exemplu, funcția apelează după cum urmează:

 greet(name="Bruce","How do you do?")

Va rezulta o eroare:

 SyntaxError: arg non-cuvânt cheie după cuvânt cheie arg

Argumente arbitrare Python

Uneori, nu știm în prealabil numărul de argumente care vor fi transmise unei funcții. Python ne permite să gestionăm acest tip de situație prin apeluri de funcții cu un număr arbitrar de argumente.

În definiția funcției, folosim un asterisc (*) înainte de numele parametrului pentru a indica acest tip de argument. Iată un exemplu.

 def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")

Ieșire

 Bună Monica Bună ziua Luke Bună ziua Steve Bună ziua John

Aici am numit funcția cu mai multe argumente. Aceste argumente sunt înfășurate într-un tuplu înainte de a fi transmise în funcție. În interiorul funcției, folosim o forbuclă pentru a recupera toate argumentele înapoi.

Articole interesante...