Turinys

Funkcijos

Paprasčiausia funkcija

laipsnis = 2
dar_vienas_skaichius = 7
 
# Funkcijai parametrai VISADA perduodami kaip reference'as
def kvadratu(skaichius, eilute = 'Tuščia eilutė', a = dar_vienas_skaichius):
	"""Kėlimo kvadratu funkcija, papildomai išspausdina 'eilute' """
 
	global laipsnis	# Kaip ir PHP
 
	print eilute
	print a	# a = 7 (o ne 8)
 
	skaichius = skaichius**laipsnis
	return skaichius
 
a = 20
dar_vienas_skaichius = 8
 
# Nukopijuojam ;-)
kvadratas = kvadratu
 
print kvadratas (a)	# 400

Parametrų išsaugojimas

# Funkcija išsisaugo jai perduotus parametrus
def prideti (skaichius, sarashas = []):
	sarashas.append (skaichius)
	return sarashas
 
print prideti (1)	# [1]
print prideti (2)	# [1, 2]
print prideti (3)	# [1, 2, 3]

Parametrų perdavimas keywords'ais

# Parametrai perduodami keywords'ais
def funkcija (a, b):
	print "a =", a
	print "b =", b
 
funkcija (a = 1, b = 2)  # FIXME ar tikrai veikia?

Funkcijos alias'as

def gyvenimo_prasme:
      # ...
      return surasta_prasme
 
kitas_pavadinimas = gyvenimo_prasme
print surasta_prasme

Default'iniai parametrai

iprastas_vardas = "Linas"
 
def spausdinti_varda (vardas = iprastas_vardas):
    print vardas
 
iprastas_vardas = "Tomas"
spausdinti_varda () # "Linas"

Lambda funkcijos

def make_incrementor(n):
    return lambda x: x + n
 
f = make_incrementor(42)
 
print f(0) # 42
print f(1) # 43

Dokumentacija

def gyvenimo_prasme (x, y):
    """Funkcija, nustatanti gyvenimo prasmę.
 
    Funkcija, naudojanti Lino Gyvenimo Prasmės Nustatymo Algoritmą
    """
 
# Spausdiname aprašymą
print gyvenimo_prasme.__doc__

filter()

Sukuriame funkciją:

def ar_pirminis (skaicius):
	"""Funkcija nustato, ar skaichius yra pirminis."""
 
	# Dalinasi ish 2?
	if (skaicius % 2 == 1):
		puse_skaiciaus = (skaicius - 1) / 2
	else:
		puse_skaiciaus = skaicius / 2
 
	pirminis = 1
 
	for x in range(1, puse_skaiciaus+1):
		if (skaicius % x == 0 and x != 1):
 
			pirminis = 0
			break
 
	return pirminis

Spausdiname tik pirminius skaičius nuo 1 iki 49:

print filter (ar_pirminis, range (50))

map()

Pirmas pavyzdys

def kubas (skaicius): return skaicius * skaicius * skaicius
 
# Spausdiname pirmu 11 skaichiu kubus
print map (kubas, range (1, 11));

Antras pavyzdys

def sudetis (pirmas, antras): return pirmas + antras
 
# Spausdiname [1..10] ir [21..30] sumas
print map (sudetis, range (1, 11), range (21, 31))

reduce()

Skaičiuojame [1..10] skaitmenų sumą.

reduce() funkcijai perduoda pirma ir antra elementus, tada - funkcijos rezultatą ir trečią elementą, tada …

Trečiu reduce() parametru galima nurodyti, nuo kurio elemento pradėti (pagal elemento reikšmę).

print reduce (sudetis, range (1, 11))

Pavyzdyje aprašytą veiksmą atlieka ir sum()