py30.png

Argumenty funkcí s hvězdičkou

Bez hvězdiček

Obyčejné předávání argumentů je jasné: "n" je argument (vnitřní proměnná) funkce f. Nabývá hodnot, které mu předávme při volání. Proměnná n při opuštění funkce zaniká:

# definice funkce s argumentem n
def f(n):
    print (n)

f(5)          # vytiskne "5"
f("ahoj")     # vytiskne ahoj
f()           # způsobí chybu - zapomněli jsme předat argument
print (n)     # způsobí chybu - n existuje jen v rámci funkce

Argumentů může být více:

def f(m,n):
    print (m,n)

f(1,2)      # vytiskne "1 2"

Funkce může (a je to obvyklejší případ), nějakou hodnotu vracet:

def dvakrat(n):
    x=2*n
    return x

dvakrat(5)        # nevytiskne nic, protože nikde není print
print (dvakrat(5))  # tiskne vrácenou hodnotu, tedy "10"

Jedna hvězdička

Za hvězdičkou se očekává sekvence. Dosadí se z ní poziční argumenty funkce:

def f(*n):
    for i in n:
        print (i)

f(1,2,3,4)
seznam=[7,8,9,10]
f(*seznam)

Dvě hvězdičky

Za dvěma hvězdičkami se očekává slovník. Dosadí se z něj zbývající klíčové parametry funkce:

def f(**kwd):
    print (kwd)

f(a=1,b=2,c=3.4,ahoj="hello world")

Více na http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions

Další ukázka

Pro vypsání předem nedefinovaných pozičních argumentu použijeme *promenna, pro vypsání nedefinovaných keyword argumentů použijeme **promenna2.

def funkce(*args,**kwargs):
  print "pozicni argumenty:", args
  print "Keyword argumenty:", kwargs

funkce(1, 2, 'hello', neco="nic")

Vypíše:

>>pozicni argumenty: (1, 2, 'hello')
>>Keyword argumenty: {'neco': 'nic'}