2.14. Fonksiyon tanımlama¶
Bir fonksiyon, bir kod bloğunu bir ad altında paketleyerek pek çok yerden çağrılabilmesini sağlar. Bir hesaplama, eylem ya da belirli bir iş parçası birden fazla yerde göründüğünde, bir fonksiyon onu tek bir adlandırılmış şeye dönüştürür.
Anahtar kelime def‘tir:
def greet(name):
print("hello,", name)
greet("Alice")
greet("Bob")
Çıktı:
hello, Alice
hello, Bob
def ile başlayan satır tanımdır – fonksiyonu oluşturur ancak gövdesini çalıştırmaz. greet("Alice") çağrısı, girintili bloğu çalıştıran şeydir.
2.14.1. Parametreler ve argümanlar¶
def satırındaki parantezlerin içindeki adlar parametrelerdir – çağıran tarafın sağlayacağı değerler için yer tutuculardır. Aktarılan gerçek değerler ise argümanlardır. Bir fonksiyon sıfır ya da daha fazla parametre alabilir:
def square(x):
return x * x
def add(a, b):
return a + b
def is_even(n):
return n % 2 == 0
Yanlış sayıda argümanla yapılan bir çağrı hemen TypeError hatası verir.
2.14.2. return¶
Bir return ifadesi fonksiyonu derhal sonlandırır ve çağırana bir değer geri verir:
def absolute(x):
if x < 0:
return -x
return x
Hiçbir zaman bir return ifadesine ulaşmayan (ya da değeri olmayan çıplak bir return içeren) bir fonksiyon None döndürür:
>>> def shout(text):
... print(text.upper())
...
>>> result = shout("hi")
HI
>>> print(result)
None
Bir fonksiyonun birden fazla return ifadesi olabilir; ilk ulaşılan kazanır ve gövdenin geri kalanı atlanır.
2.14.2.1. Birden fazla değer döndürme¶
Python çağrı başına bir nesne döndürür, ancak o nesne bir tuple olabilir – ve çağıran taraf onu hemen yerinde açabilir:
def minmax(values):
return (min(values), max(values))
lo, hi = minmax([3, 1, 4, 1, 5, 9])
Dönüş değerinin etrafındaki parantezler isteğe bağlıdır; return a, b ve return (a, b) aynıdır.
2.14.3. Docstring’ler¶
Bir fonksiyon gövdesinin ilk ifadesi olarak yerleştirilen bir dize değişmezi bir docstring‘tir. Fonksiyon nesnesinde saklanır ve help() fonksiyonunun gösterdiği şeydir:
def scale(value, factor):
"""Multiply ``value`` by ``factor`` and return the result."""
return value * factor
IDE, imleç fonksiyon adının üzerine geldiğinde docstring’leri araç ipuçlarında gösterir, dolayısıyla tek satırlık bir özet bile kendini amorti eder. Üç tırnaklı dizeler, daha fazla ayrıntı yararlı olduğunda docstring’in birden fazla satıra yayılmasına olanak tanır.
2.14.4. Adlandırma kuralları¶
Fonksiyon adları snake_case kullanır – alt çizgilerle ayrılmış küçük harfli sözcükler. Ad, fonksiyonun ne yaptığını tanımlamalıdır:
İyi:
read_temperature,parse_header,is_valid.Kaçının:
do_stuff,handle1,temp_func.
Baştaki bir alt çizgi (_helper), bir fonksiyonu modülüne özel (dahili) olarak işaretler. Bu kurala yaygın olarak uyulur ancak Python tarafından zorunlu kılınmaz.