Python'da Fonksiyonlar

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 + y

Fonksiyon Çağırma

Tanımlanmış bir fonksiyon şu şekilde çağrılıp kullanılabilir:.

1result = add(3, 4)
2print(result)  # Output: 7

Bir Fonksiyonun Bileşenleri

  1. Fonksiyon Adı: Fonksiyonu çağırmak için kullanılan ad.

  2. Argümanlar (Parametreler): Çağrı sırasında iletilen veriyi alan değişken adları. Sıfır veya daha fazla argüman tanımlayabilirsiniz.

  3. Dokümantasyon Dizisi (Docstring): Bir fonksiyonun amaçlarını ve kullanımını tanımlamak için kullanılan bir dizi. İsteğe bağlı.

  4. Fonksiyon Gövdesi: Fonksiyonun gerçekleştirdiği talimatların yazıldığı girintili bir blok.

  5. Dönüş Değeri: return ifadesi kullanılarak çağırana döndürülen değer. return kullanılmazsa, varsayılan olarak None döndürülür.

Argüman Türleri

Python'da birkaç farklı argüman türü vardır.

  1. Konumlu Argümanlar: Fonksiyonlara argüman iletmenin standart yolu.
  2. Varsayılan Argümanlar: Çağrı sırasında atlanabilen varsayılan değerlere sahip argümanlar.
1def greet(name, message="Hello"):
2    print(f"{message}, {name}")
3
4greet("Alice")  # "Hello, Alice"
5greet("Bob", "Good morning")  # "Good morning, Bob"
  1. Değişken Uzunluklu Argümanlar: Bir demet olarak birden fazla konumlu argüman almak için *args ve bir sözlük olarak almak için **kwargs kullanılı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: expression
  • argümanlar: Fonksiyonun argümanlarını belirtir. Virgüllerle ayrılmış birden fazla argüman belirtilebilir.
  • ifadeler: Argümanlara göre değerlendirilen bir ifadedir. İ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: 8

Bu ö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:.

  1. 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.
  2. Listeleri Sıralamak İçin Anahtar Belirlediğinizde

    • Sort() veya sorted() 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: 120

Bu ö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 * 2

Sonuç

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.

YouTube Video