Python'da Fonksiyonlar
Bu makale, Python'daki fonksiyonları açıklar.
YouTube Video
Python'da Fonksiyonlar
Python'daki fonksiyonlar, yeniden kullanılabilir kod bloklarını tanımlamak için temel bir özelliktir ve gerektiğinde çağrılarak programınızı düzenlemenizi ve basitleştirmenizi sağlar. Fonksiyonları kullanmak, kod okunabilirliğini artırabilir ve DRY prensibine (Kendini Tekrarlama, aynı kodu birden çok kez yazmaktan kaçınma) uymanıza olanak tanır.
Fonksiyon Tanımlama
Fonksiyonlar def anahtar kelimesi kullanılarak tanımlanır. Temel sözdizimi şu şekildedir:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_valueÖrneğin, iki sayıyı toplayan bir fonksiyon tanımlamak için şunu yazarsınız:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + yFonksiyon Çağırma
Tanımlanmış bir fonksiyon şu şekilde çağrılıp kullanılabilir:.
1result = add(3, 4)
2print(result) # Output: 7Bir Fonksiyonun Bileşenleri
-
Fonksiyon Adı
- Fonksiyonun adı, onu çağırırken kullanılır.
-
Argümanlar (Parametreler)
- Çağrı sırasında iletilen verileri alan değişken adları. Sıfır veya daha fazla argüman tanımlayabilirsiniz.
-
Dokümantasyon Satırı (Docstring)
- Fonksiyonun amacını ve kullanımını açıklayan bir dizedir. İsteğe bağlı.
-
Fonksiyon Gövdesi
- Fonksiyonun çalıştırdığı komutların yazıldığı girintili blok.
-
Dönüş Değeri
returnifadesi kullanılarak çağırana döndürülen değer.returnkullanılmazsa, varsayılan olarakNonedöndürülür.
Argüman Türleri
Python'da birkaç farklı argüman türü vardır.
- Konumsal Argümanlar
- Fonksiyona argüman aktarmanın yaygın yolu.
- Varsayılan Argümanlar
- Fonksiyon çağrılırken atlanabilmeleri için argümanlara varsayılan değerler atanır.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"- Değişken Uzunluklu Argümanlar
argsbirden fazla konumsal argümanı bir demet (tuple) olarak alır,kwargsise bunları bir sözlük (dictionary) olarak alır.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}Fonksiyonları doğru şekilde kullanarak Python programlarını daha etkili ve verimli bir şekilde yazabilirsiniz.
Python'da Lambda Fonksiyonları
Python'da lambda fonksiyonları, isimsiz ve özlü fonksiyonlar tanımlamak için kullanılır. Normal def anahtar kelimesiyle tanımlanan fonksiyonlardan farklı olarak, lambda kısa, tek satırlık fonksiyonlar oluşturmanıza olanak tanır. Burada, Python'daki lambda fonksiyonlarını ayrıntılı bir şekilde açıklayacağız.
Lambda Fonksiyonlarının Temelleri
Lambda fonksiyonları, isimsiz fonksiyonlar olarak da adlandırılır ve adından da anlaşılacağı üzere ismi olmayan geçici fonksiyonlar tanımlamak için kullanılır. Temel sözdizimi şu şekildedir:.
1lambda arguments: expressionargümanlar- Bir fonksiyonun argümanlarını belirtir. Virgüllerle ayrılmış birden fazla argüman belirtilebilir.
ifade- Argümanlara göre değerlendirilen bir ifade. İfadenin sonucu, fonksiyonun dönüş değeri olur.
Örneğin, aşağıdaki kod iki sayıyı toplamak için bir lambda fonksiyonunu tanımlar ve çalıştırır.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8Bu örnekte, lambda x, y: x + y, x ve y adında iki argüman alan ve bunların toplamını döndüren bir lambda fonksiyonudur.
Lambda Fonksiyonlarının Kullanım Alanları
Lambda fonksiyonları, anlık olarak basit bir fonksiyon tanımlamanız gereken durumlarda kullanışlıdır. Özellikle aşağıdaki durumlarda yaygındır:.
-
Fonksiyonlara Argüman Olarak Geçildiğinde
- Kısa ve geçici fonksiyonları geçirirken, yüksek dereceli fonksiyonlarda (diğer fonksiyonları argüman olarak alan fonksiyonlar) kullanışlıdır.
-
Listeleri Sıralamak İçin Anahtar Belirlediğinizde
Sort()veyasorted()gibi fonksiyonlarda sıralama ölçütlerini (anahtarları) belirlemek için kullanışlıdır.
Üst Düzey Fonksiyonlarda Kullanım Örneği
Üst düzey fonksiyonların tipik örnekleri arasında map(), filter() ve reduce() bulunur. Bu fonksiyonlar, başka fonksiyonları argüman olarak alır ve bunları liste gibi dizilere uygular.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]Bu örnekte, bir listedeki her sayıyı karesini almak için lambda fonksiyonu map() fonksiyonuna geçirilir.
Liste sıralamasını kullanma örnekleri
lambda fonksiyonu, bir liste sıralanırken özel bir anahtar belirtmek için bazen kullanılabilir. Örneğin, aşağıdaki kod bir listeyi ikili grubun ikinci öğesine göre sıralar.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]Bu örnekte, ikili grupları ikinci öğelerine (bir string) göre sıralamak için bir lambda fonksiyonu kullanılır.
filter() ve lambda
filter() fonksiyonu, bir liste (veya diğer yineleyiciler) içindeki öğeleri verilen bir koşula dayanarak filtrelemek için kullanılır.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]Bu örnekte, bir listedeki çift sayılar filtrelenerek yeni bir liste oluşturulur.
lambda ve reduce()
reduce() fonksiyonu, bir listeyi tek bir değere indirmek için kullanılır. Bu, bir lambda fonksiyonu kullanılarak kolayca uygulanabilir.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120Bu örnekte, listedeki tüm öğeler birbiriyle çarpılarak bir sonuç elde edilir.
Karmaşık lambda fonksiyonları kullanmaktan kaçının
lambda fonksiyonlarının avantajı kısa olmalarıdır, ancak karmaşık mantık uygularken okunması zor hale gelirler. Bu nedenle, bir satırda ifade edilebilecek basit işlemler için kullanımları uygundur. Karmaşık işlemler için, def ile bir fonksiyon tanımlamak daha okunabilir ve sürdürülebilir olacaktır.
Örneğin, aşağıdaki gibi karmaşık lambda fonksiyonlarını kullanmaktan kaçınmalısınız.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)Bu durumda, aşağıda gösterildiği gibi def ile tanımlanmış bir fonksiyon kullanmak daha iyidir.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2Sonuç
Python'un lambda fonksiyonları, geçici ve kısa fonksiyonlar tanımlamak için kullanışlı bir araçtır. Bunlar, genellikle yüksek dereceli fonksiyonlarda veya liste işlemlerinde belirli koşulları özlü bir şekilde tanımlamak için kullanılır. Ancak, lambda fonksiyonları basit görevlerle sınırlandırılmalı ve karmaşık mantık için def fonksiyonları tercih edilmelidir.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.