Argumenti funkcije Python (privzeto, ključna beseda in poljubno)

V Pythonu lahko definirate funkcijo, ki sprejme spremenljivo število argumentov. V tem članku se boste naučili definirati takšne funkcije z uporabo privzetih, ključnih besed in poljubnih argumentov.

Video: Argumenti funkcije Python: položaj, ključne besede in privzeto

Argumenti

V temi o uporabniško določeni funkciji smo se naučili definiranja funkcije in njenega klica. V nasprotnem primeru bo klic funkcije povzročil napako. Tu je primer.

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

Izhod

 Pozdravljena Monica, dobro jutro!

Tu ima funkcija greet()dva parametra.

Ker smo to funkcijo poklicali z dvema argumentoma, deluje gladko in ne dobimo nobene napake.

Če ga pokličemo z različnim številom argumentov, bo tolmač prikazal sporočilo o napaki. Spodaj je klic te funkcije z enim in brez argumentov skupaj s pripadajočimi sporočili o napakah.

 >>> greet ("Monica") # samo en argument TypeError: greet () manjka 1 obvezen pozicijski argument: 'msg'
 >>> greet () # brez argumentov TypeError: greet () manjka 2 zahtevana pozicijska argumenta: 'ime' in 'msg'

Argumenti s spremenljivo funkcijo

Doslej so imele funkcije določeno število argumentov. V Pythonu obstajajo drugi načini za določanje funkcije, ki lahko sprejme spremenljivo število argumentov.

Spodaj so opisane tri različne oblike te vrste.

Privzeti argumenti Pythona

Argumenti funkcije imajo lahko privzete vrednosti v Pythonu.

Argumentu lahko damo privzeto vrednost z uporabo operatorja dodelitve (=). Tu je primer.

 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?")

Izhod

Pozdravljena Kate, dobro jutro! Pozdravljeni Bruce, kako ste?

V tej funkciji parameter namenima privzete vrednosti in je obvezen (obvezen) med klicem.

Po drugi strani ima parameter msgprivzeto vrednost "Good morning!". Med klicem torej ni obvezna. Če je navedena vrednost, bo prepisala privzeto vrednost.

Vsako število argumentov v funkciji ima lahko privzeto vrednost. Ko pa imamo privzeti argument, morajo imeti vsi argumenti na njegovi desni tudi privzete vrednosti.

To pomeni, da neprivzeti argumenti ne morejo slediti privzetim argumentom. Če bi na primer glavo funkcije definirali zgoraj kot:

 def greet (msg = "Dobro jutro!", ime):

Dobili bi napako kot:

 SyntaxError: neprivzeti argument sledi privzetemu argumentu

Argumenti ključnih besed Python

Ko prikličemo funkcijo z nekaterimi vrednostmi, se te vrednosti dodelijo argumentom glede na njihov položaj.

Na primer, v zgornji funkciji greet(), ko smo jo poklicali kot greet("Bruce", "How do you do?"), se vrednost "Bruce"dodeli imenu argumenta in podobno "How do you do?"kot msg.

Python omogoča klicanje funkcij z uporabo argumentov ključnih besed. Ko funkcije pokličemo na ta način, lahko vrstni red (položaj) argumentov spremenimo. Vsi naslednji klici zgornje funkcije so vsi veljavni in imajo enak 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?") 

Kot vidimo, lahko pozicijske argumente med klicem funkcije mešamo z argumenti ključnih besed. Upoštevati pa moramo, da morajo argumenti ključnih besed slediti pozicijskim argumentom.

Argument položaja za argumenti ključnih besed bo povzročil napake. Na primer, funkcija pokliče na naslednji način:

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

Rezultat napake:

 SyntaxError: argumentacija brez ključnih besed za argumentirano ključno besedo

Samovoljni argumenti Pythona

Včasih ne vemo vnaprej, koliko argumentov bo posredovanih v funkcijo. Python nam omogoča, da tovrstne situacije obvladamo s klici funkcij s poljubnim številom argumentov.

V definiciji funkcije za oznako tovrstnega argumenta pred imenom parametra uporabimo zvezdico (*). Tu je primer.

 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")

Izhod

 Pozdravljeni Monica Pozdravljeni Luke Pozdravljeni Steve Pozdravljeni John

Tu smo funkcijo poklicali z več argumenti. Ti argumenti se zavijejo v nabor, preden se prenesejo v funkcijo. Znotraj funkcije uporabljamo forzanko za pridobivanje vseh argumentov nazaj.

Zanimive Članki...