İşte size örnek bir fonksiyon tanımı
>>> def topla(a,b):
… return a + b
…
Fonksiyon tanımları def anahtar kelimesi ile başlıyor. Ardından fonksiyonun ismi ve parametreleri geliyor. Diğer bütün blok tanımlamalarında olduğu gibi satır : ile sonlanıyor. Fonksiyonun kendisine ait kodlar içeri girintili olarak yazılıyor.
Dikkat ederseniz nasıl değişkenleri tanımlarken tip belirtmiyorsak fonksiyon tanımlarken de geri dönüş değeri belirtmemiz gerekmiyor. Fonksiyonu çağırıp sonucunu görelim:
>>> print “3 + 5 = %d” % topla(3, 5)
3 + 5 = 8
>>>
Bir de şuna bakın:
>>> add=topla
>>> print add(4, 5)
9
>>>
Burada bir değişkene fonksiyon ataması yaptık. Artık add değişkenini de topla fonksiyonu gibi kullanılabilir kıldık. Python’ı esnek ve kullanımı kolay kılan özelliklerinden sadece biri bu.
Normal fonksiyon tanımlamaları dışında lambda fonksiyonları da tanımlamak mümkün. Mesela topla fonksiyonunu şu şekilde de ifade edebiliriz:
>>> topla = lambda a,b : a + b
>>> print topla(1, 2)
3
>>>
Lambda fonksiyonları tek satırlık, tek işlemlik fonksiyon tanımları için kullanılabilmektedir.
Fonksiyon içinde fonksiyon tanımlamak da mümkün:
>>> def topla_ve_yazdir(a, b):
… def yazdir(a, b, sonuc):
… print “%d + %d = %d” % (a, b, sonuc)
… yazdir(a, b, a + b)
…
>>> topla_ve_yazdir(5, 6)
5 + 6 = 11
>>>
Burada dikkat edilmesi gereken husus şudur: yazdir fonksiyonu sadece topla_ve_yazdir fonksiyonu içinden çağırılabilir.

