Python Gömülü Fonksiyonlar

Merhaba arkadaşlar, bu yazımızda Python derslerinin bu serisinde yirminci ders olarak Python Gömülü Fonksiyonlar konusuna değinmeye çalışacağım. Umarım sizler için faydalı bir yazı olur. İsterseniz hemen başlayalım.

Python Gömülü Fonksiyonlar

Gömülü Fonksiyon Nedir?

Gömülü fonksiyonlar (ya da iç içe fonksiyonlar), bir fonksiyonun içinde tanımlanmış başka bir fonksiyonları ifade eder. Gömülü fonksiyonlar, yalnızca iç fonksiyonun tanımlandığı dış fonksiyon tarafından çağrılabilir ve yalnızca dış fonksiyonun çalışma alanı içinde geçerlidir. Gömülü fonksiyonlar genellikle, dış fonksiyonun amacını daha da kapsamlı hale getirmek için kullanılır. Örnek olarak, bir sayının karesini almak için kullanabileceğiniz bir gömülü fonksiyon tanımlayabilirsiniz.

def outer_function(x):
    def inner_function(x):
        return x*x
    result = inner_function(x)
    return result

print(outer_function(5))  # Output: 25

Bu örnekte, outer_function(x) adlı dış fonksiyon içinde inner_function(x) adlı gömülü fonksiyon tanımlanmıştır. inner_function(x) fonksiyonu alınan argümanı karesini döndürür ve outer_function(x) fonksiyonu bu sonucu geri döndürür.

Gömülü fonksiyonlar, yalnızca iç fonksiyonun tanımlandığı dış fonksiyon tarafından çağrılabilir, bu nedenle gömülü fonksiyonlar genellikle daha kapsamlı veya sofistike işlemleri yapmak için kullanılır.

Gömülü fonksiyonlar, birçok farklı şekilde kullanılabilir. Aşağıda bazı örnekler verilmiştir:

  1. Faktöriyel hesabı yapan bir fonksiyon:
def factorial(n):
    def inner_factorial(n):
        if n == 1:
            return 1
        else:
            return n * inner_factorial(n - 1)
    return inner_factorial(n)

print(factorial(5))  # Output: 120
  1. Bir dizideki maksimum değeri bulan bir fonksiyon:
def find_max(numbers):
    def inner_max(a, b):
        if a > b:
            return a
        else:
            return b
    max_value = numbers[0]
    for number in numbers:
        max_value = inner_max(max_value, number)
    return max_value

numbers = [1, 5, 2, 8, 9, 3]
print(find_max(numbers))  # Output: 9
  1. Bir metin içinde bir kelime arayan bir fonksiyon:
def find_word(text, word):
    def inner_find(text, word, start):
        index = text.find(word, start)
        if index == -1:
            return
        else:
            print("Word found at index:", index)
            inner_find(text, word, index + 1)
    inner_find(text, word, 0)

text = "Python is a powerful programming language"
find_word(text, "Python")

Map() Fonksiyonu

Gömülü fonksiyonlar, Python’da map() fonksiyonu gibi bazı işlevsel programlama aracıları ile de kullanılabilir. Aşağıda bazı örnekler verilmiştir:

  1. Bir dizideki tüm sayıların karesini almak:
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x*x, numbers)
print(list(squared_numbers))  # Output: [1, 4, 9, 16, 25]

Bu örnekte, map() fonksiyonu numbers dizisi içindeki tüm sayıları alır ve lambda x: x*x gömülü fonksiyonu ile kare alır.

  1. Bir dizideki tüm stringleri büyük harfe çevirmek:
words = ["python", "programming", "language"]
upper_words = map(lambda x: x.upper(), words)
print(list(upper_words))  # Output: ["PYTHON", "PROGRAMMING", "LANGUAGE"]

Bu örnekte, map() fonksiyonu words dizisi içindeki tüm stringleri alır ve lambda x: x.upper() gömülü fonksiyonu ile büyük harfe çevirir.

Gömülü fonksiyonlar, map() gibi işlevsel programlama aracıları ile kullanıldığında, kodun okunaklılığını ve anlaşılırlığını arttırabilir ve işlemleri daha hızlı ve verimli hale getirebilir.

Reduce() Fonksiyonu

reduce() fonksiyonu, bir dizideki tüm elemanların birbirleriyle bir işlem yapmasını sağlar. Bu işlem, reduce() fonksiyonu içinde verilen gömülü bir fonksiyon tarafından gerçekleştirilir. reduce() fonksiyonu, verilen dizinin ilk iki elemanını alır, gömülü fonksiyonu kullanarak işlem yapar ve sonucu dizinin üçüncü elemanı ile tekrar işlem yapar. Bu işlem, dizinin sonuna kadar devam eder ve sonunda tek bir değer geri döndürür.

reduce() fonksiyonu, Python’da işlevsel programlama kütüphanesi olan functools kütüphanesinde bulunur. Örnek olarak, bir dizideki tüm elemanların toplamını almak için reduce() fonksiyonunu kullanabilirsiniz:

from functools import reduce
numbers = [1, 2, 3, 4, 5]
total = reduce(lambda x, y: x+y, numbers)
print(total)  # Output: 15

Bu örnekte, reduce() fonksiyonu numbers dizisindeki tüm elemanları alır ve lambda x, y: x+y gömülü fonksiyonu ile toplar. Bu işlem sonunda, dizinin tüm elemanlarının toplamı olan 15 değeri geri döndürür.

Ayrıca reduce() fonksiyonu, dizideki en büyük veya en küçük değer bulmak, dizideki elemanları çarpma veya bölme gibi işlemler yapmak için de kullanılabilir.

Filter() Fonksiyonu

filter() fonksiyonu, bir dizideki elemanları filtrelemek için kullanılır. filter() fonksiyonu, verilen bir gömülü fonksiyon ve bir dizi kullanarak çalışır. Gömülü fonksiyon, her bir eleman için çağrılır ve true veya false değer döndürür. Eğer gömülü fonksiyon true değer döndürürse, o eleman dizinin sonucunda yer alır, aksi takdirde eleman dizinin sonucunda yer almaz.

Örnek olarak, bir dizideki tüm çift sayıları filtrelemek için filter() fonksiyonunu kullanabilirsiniz:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # Output: [2, 4, 6, 8, 10]

Bu örnekte, filter() fonksiyonu numbers dizisindeki tüm sayıları alır ve lambda x: x % 2 == 0 gömülü fonksiyonu ile çift sayıları filtreler. Bu işlem sonunda, dizinin sadece çift sayıları olan [2, 4, 6, 8, 10] geri döndürür.

Ayrıca filter() fonksiyonu dizideki belirli bir karakteri içeren stringleri, belirli bir aralıkta olan sayıları filtrelemek gibi birçok farklı senaryoda kullanılabilir. Örnek olarak, bir dizideki tüm stringleri filtrelemek için filter() fonksiyonunu kullanabilirsiniz:

data = ["apple", "banana", "cherry", "date", 123, True]
words = filter(lambda x: type(x) == str, data)
print(list(words))  # Output: ["apple", "banana", "cherry", "date"]

Bu örnekte, filter() fonksiyonu data dizisindeki tüm elemanları alır ve lambda x: type(x) == str gömülü fonksiyonu ile string olanları filtreler. Bu işlem sonunda, dizinin sadece string olan elemanları olan [“apple”, “banana”, “cherry”, “date”] geri döndürür.

Ayrıca filter() fonksiyonu belirli bir aralıkta olan sayıları, belirli bir karakter içeren stringleri, belirli bir koşula uyan nesneleri filtrelemek için de kullanılabilir.

Zip() Fonksiyonu

zip() fonksiyonu, Python’da birden fazla diziyi eşleştirmek için kullanılır. zip() fonksiyonu, verilen dizileri satır satır olarak eşleştirir ve her satır için bir tuple oluşturur. Her tuple, verilen dizilerin aynı indeksindeki elemanları içerir. Eşleştirilen dizilerin uzunlukları eşit değilse, en kısa dizinin eleman sayısı kadar tuple oluşur.

Örnek olarak, iki dizinin elemanlarını eşleştirmek için zip() fonksiyonunu kullanabilirsiniz:

name = ["Alice", "Bob", "Charlie"]
age = [25, 30, 35]
result = zip(name, age)
print(list(result))  # Output: [("Alice", 25), ("Bob", 30), ("Charlie", 35)]

Bu örnekte, zip() fonksiyonu name ve age dizilerinin elemanlarını satır satır olarak eşleştirir ve her satır için bir tuple oluşur. Bu tupleler name dizisindeki elemanlar ile age dizisindeki elemanları içerir.

zip() fonksiyonu birden fazla dizi eşleştirmek için kullanılabilir, örnek olarak üç dizinin elemanlarını eşleştirmek için:

name = ["Alice", "Bob", "Charlie"]
age = [25, 30, 35]
gender = ["Female", "Male", "Male"]
result = zip(name, age, gender)
print(list(result))  # Output: [("Alice", 25, "Female"), ("Bob", 30, "Male"), ("Charlie", 35, "Male")]

Bu örnekte, zip() fonksiyonu name, age, gender dizilerinin elemanlarını satır satır olarak eşleştirir ve her satır için bir tuple oluşur. Bu tupleler name dizisindeki elemanlar ile age dizisindeki elemanlar ile gender dizisindeki elemanları içerir.

zip() fonksiyonu, veri analitikte, veri görselleştirmede veya çeşitli başka uygulamalarda kullanışlı bir araçtır. Özellikle birden fazla dizi veya sözlük içindeki verileri işlemekte kullanılabilir.


Arkadaşlar bu Python Gömülü Fonksiyonlar adlı yazımızın da sonuna gelmiş bulunmaktayız. Umarım faydalı olmuştur.

0 0 votes
Article Rating
Subscribe
Bildir
guest

0 Yorum
En Yeniler
Eskiler Beğenilenler
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x