python fonksiyon etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
python fonksiyon etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

20 Ocak 2022 Perşembe

Python metod ve fonksiyonları - Python Methods and Functions

Merhaba,

Sıklıkla karıştırılabilen bir konuya açıklık getirmek isterim. Python yazılım dilinde fonksiyon ve metod konseptleri farklı şeyleri ifade etmektedir. 

Metodlar sınıfların bir parçasıdır ve sınıf ile oluşturulan objenin durumunu değiştirebilir. Fonksiyonlar ise sınıflardan bağımsız tek başına çalışan ve çağrılabilen yapılardır. Bir objenin parçası değildirler.

Örnek ile açıklamak gerekirse.

class Toplam:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    # Metod Ornegi
    def islem(self):
        return self.a + self.b

#Fonksiyon Ornegi
def topla(a, b):
    return a + b

Toplam sınıfı içinde tanımlı islem() bir metoddur. Sınıf dışında tanımlı topla() ise bir fonksiyondur.







Teşekkürler,

Cem Selmanoğulları

17 Ocak 2022 Pazartesi

Python yazılım dilinde Dekoratör (Decorator) kullanımı

Merhaba,

Bugün Python yazılım dilinde Decorator kullanımına bir örnek paylaşmak istiyorum. Kısaca diğer fonksiyonları yada sınıfları geliştirip modifiye etmeye yarayan python objeleri şeklinde tanımlayabiliriz. 

Örnek vermek gerekirse, bir fonksiyonumuz olsun. Bu fonksiyon bir string döndürüyor olsun. Bu döndürülen stringin büyük harfle başlamasını istiyoruz. Bunu direkt fonksiyon içinde yapmamız mümkün, ama biz bunu her yazdığımız fonksiyon içinde tekrar tekrar yapacak mıyız ?  İşte bunun için her ihtiyacımız olduğunda decorator fonksiyonunu çağırarak bu işi yapmasını sağlayabiliriz. Alttaki örnekte capitalizer isimli bir decorator fonksiyonumuz var. birde string dönen fonksiyonumuz var. @capitilizer referansını stringer fonksiyonunun başına yazdığımızda artık capitilizer fonksiyonu bir nevi stringer fonksiyonunu sarmalayarak geliştirip dönen değeri büyük harfle başlayacak şekilde geliştirecektir.

def capitalizer(func):
def wrapper(string):
innerfunc = func(string)
capitalized = innerfunc.capitalize()
return capitalized
return wrapper

@capitalizer
def stringer(string):
return string

print(stringer("tHiS is a DeCORator EXAmple"))

Çıktı :  This is a decorator example


Bir başka örneği ise Python Django Framework üzerinden verebiliriz. Django otantikasyon sistemi view fonksiyonları ile birlikte kullanabileceğimiz bir @login_required dekoratörü sunmaktadır. Bu dekoratörün refere edildiği view eğer sisteme login olunduysa gösterilecek olunmadıysa gösterilmeyecektir.

Alttaki örnekte @login_required dekoratörünün nasıl uygulandığını görebilirsiniz. Login olmayanlara my_view gösterilmeyecektir.


from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...






Teşekkürler,

Cem Selmanoğulları