Ders 31: Decorators | Python Decorator Kullanımı | Python ileri seviye fonksiyonlar.

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ก.ย. 2024
  • Merhabalar arkadaşlar bu derste Python'da decorator kullanımına değindik. İlk defa karşılaşacak arkadaşlar için biraz karmaşık bir konsept olabilir. Mümkün olduğunca detaylı incelemeye çalıştım. Umarım faydalı olur hepinize iyi günler dilerim.

ความคิดเห็น • 64

  • @ahmedfarukcakmak6724
    @ahmedfarukcakmak6724 4 ปีที่แล้ว +5

    Müthiş bir videoydu, teşekkürler :)

    • @pythonagiris5616
      @pythonagiris5616  4 ปีที่แล้ว +1

      Ahmed Faruk Çakmak faydasını gördüğünüze çok sevindim. Kolay gelsin :)

    • @ahmedfarukcakmak6724
      @ahmedfarukcakmak6724 4 ปีที่แล้ว

      @@pythonagiris5616 İterator ve Generatorlar ile ilgili video gelir mi acaba ? Kanalda varsa da ben bulamadım

  • @ramazanberkozbek
    @ramazanberkozbek ปีที่แล้ว +2

    import time
    def zaman_hesapla(fonk):
    def wrapper(*args,**kwargs):
    baslangic = time.time()
    sonuc = fonk(*args,**kwargs)
    bitis = time.time()
    print(f"islem {bitis - baslangic} saniye surdu")
    #time.sleep(3)
    return sonuc
    return wrapper

    @zaman_hesapla
    def kareleri_al(liste):
    sonuc = []
    for i in liste:
    sonuc.append(i * i)
    return sonuc
    @zaman_hesapla
    def kupleri_al(liste):
    sonuc = []
    for i in liste:
    sonuc.append(i ** 3)
    return sonuc
    @zaman_hesapla
    def topla(*args):
    time.sleep(1)
    return sum(args)
    print(kupleri_al(range(1000)))

  • @pinypondiyar7744
    @pinypondiyar7744 ปีที่แล้ว +1

    Anlatım harika sayın hocam, emeğinize sağlık.

  • @nurullahanas4906
    @nurullahanas4906 4 ปีที่แล้ว +3

    Çok teşekkürler hocam, yeni videolarınızı bekliyorum

    • @pythonagiris5616
      @pythonagiris5616  3 ปีที่แล้ว +1

      geç de olsa teşekkür ederim ☺️. Aradan geçen zamanda muhtemelen benden daha fazla bilgi sahibi olmuşsunuzdur :)

    • @nurullahanas4906
      @nurullahanas4906 3 ปีที่แล้ว

      @@pythonagiris5616 python dilini bıraktım
      Js çalışıyorum artık
      Teşekkürler hocam

    • @kadirbuyukyayla4973
      @kadirbuyukyayla4973 3 ปีที่แล้ว

      @@nurullahanas4906 umarım sizin için daha hayırlı olur.

  • @mecrayavcin
    @mecrayavcin 2 ปีที่แล้ว +1

    ## Yukaridan Asagi Siralama!
    #1 Decorator ve Test fonksiyonu ilk basta cagirilmadigi icin calismadi.
    #2 Decorator fonksiyonu calisti ve bu fonksiyona, (func) kismindan Test fonksiyonunu Callsiz gonderdi.
    #3 Wrapper ici okumaya basladi func() icine Test fonksiyonu () li sekilde eklendi, wrapper cagirilmadigi icin herhangi bir islem yapilmadan, decorator fonksiyonunun sonucu olan return calisti ve Wrapper fonksiyonu Callsiz bir sekilde Ders degiskenine geri donduruldu. Kisacasi Ders Wrapper olmus oldu!
    #4 Ders fonksiyonunu() bir sekilde cagirinca Wrapper fonksiyonu devreye girdi ve calisti.
    #5 Ilk 'Test fonksiyonu calismadan onceki islemler' yazdirdi
    #6 Ikinci olarak Test fonksiyonuna gidip 'Test fonksiyonu calisiyor' yazdirdi
    #7 Son olarak 'Test fonksiyonu calistiktan sonraki islemler' yazdirip islemi tamaldi.

  • @eraytasay
    @eraytasay 3 ปีที่แล้ว

    Bu konuyu başka bir yerden dinleyip anlamamıştım sonra burdan dinledim ve anladım. Teşekkür ederim çok yardımınız dokundu.

  • @berkcan2439
    @berkcan2439 3 ปีที่แล้ว +8

    Ders için teşekkürler udemyde paralı derslerden daha iyi bir ders anlatımınız var. Belki ileride PySide(Veya PyQt) dersleri de gelir :)

  •  3 ปีที่แล้ว +1

    Output bölümünün kaybolma sebebi ( sizin deyiminizle burası niye kayboluyor dediğiniz yer ) output alanı açıkken sağ köşedeki ayarlara girin oradan "view mode" seçeneğini seçin ve "dock pinned" olanı seçin.. taskbar özellikleri yani

  • @Canberk99
    @Canberk99 ปีที่แล้ว

    Sağ olun var olun hocam emeğinize sağlık.

  • @marduktr
    @marduktr 3 ปีที่แล้ว +1

    c'deki fonksiyon pointer'ları gibi bir şey sanırım :)
    Video çok güzel olmuş.

  • @e.selincildam4036
    @e.selincildam4036 2 ปีที่แล้ว

    Gerçekten çok başarılı bir anlatımınız var, çok yardımcı oldu. Teşekkür ediyorum.

  • @semihkartal5053
    @semihkartal5053 ปีที่แล้ว

    Çok faydali kanal ve çok hoş bir anlatım.T

  • @matemahir
    @matemahir ปีที่แล้ว

    🤩🤩🤩

  • @erenbaran6878
    @erenbaran6878 7 หลายเดือนก่อน

    allah razı olsun hocammmmmmmm

  • @yakupakiniyazov4861
    @yakupakiniyazov4861 2 ปีที่แล้ว

    Gercekten cok guzel bir sekilde anlatmissiniz, tesekkurler

  • @alicanpali963
    @alicanpali963 2 ปีที่แล้ว

    cabaniz icin tesekkurler.. harikasiniz

  • @egitimsart3258
    @egitimsart3258 3 ปีที่แล้ว +1

    Normalde corey schafer dan python öğreniyorum baya iyi oda ama açık söylemek gerekirse decorator konusunu corey schafer dan daha iyi ve basit anlatmışssınız.Teşekkürler

    • @pythonagiris5616
      @pythonagiris5616  3 ปีที่แล้ว +2

      Kendisini ben de takip ediyor ve çok beğeniyorum. Planımı ona benzer şekilde oluşturup nasıl daha anlaşılır diye düşünüp örneklerimi belirliyorum. Beğendiğinize çok sevindim :)

    • @egitimsart3258
      @egitimsart3258 3 ปีที่แล้ว +1

      @@pythonagiris5616 tarz benziyor zaten aynı konuda oda time.time ile islem yapıp zaman farkını buluyordu :D

  • @deschwedda
    @deschwedda 6 หลายเดือนก่อน

    ağzına sağlık hocam. kralsın

  • @kaanalp76
    @kaanalp76 4 ปีที่แล้ว +1

    Teşekkürler iyiki varsınız

    • @pythonagiris5616
      @pythonagiris5616  4 ปีที่แล้ว +1

      Kaan Alp siz de iyi ki varsınız . Çok teşekkür ederim :)

  • @samed3554
    @samed3554 2 ปีที่แล้ว

    Mükemmel bir video. Teşekkürler

  • @rrkatamakata7874
    @rrkatamakata7874 3 ปีที่แล้ว +2

    hocam anlatımınız çok net teşekkür ederim benim merak ettiğim neden wrapperi de döndürmek zorundayız biz return wrapper dediğimizde wrapper fonksiyonunun içeriğini göndermiş olmuyor muyuz o return ettiğimiz nereye eşitleniyor çünkü biz wrapperi spesifik olarak çağırmıyoruz. ilk örnetke fonksiyon 2 wrapperin referansı oluyor ama diğer örneklerde bir referans belirlemiyoruz

  • @egeozturk6383
    @egeozturk6383 ปีที่แล้ว

    cok faydali bir ders olmus tesekkurler .

  • @melis8034
    @melis8034 5 หลายเดือนก่อน

    aynı zaman hesaplama fonk da return ettiğimiz değeri de bi yerde kullanmıyoruz ama değeri kaybetmemek için onu bi değişkene atamak zorundayız? sebebini veya tuttuğumuz değerin nerede kullanılddığını anlamadım. 26.dk lardan bahsediyorum. 1 önceki kod örneğiyle bi fark göremedim

  • @littlem4237
    @littlem4237 ปีที่แล้ว

    Çox təşəkkür edirəm, faydalı bir video olub.🙏

  • @amedyasar9468
    @amedyasar9468 3 ปีที่แล้ว

    Çok faydalandım. Teşekkürler !

    • @pythonagiris5616
      @pythonagiris5616  3 ปีที่แล้ว

      O zaman video amacına ulaşmış demektir :) kolay gelsin.

  • @serdaryazgan8922
    @serdaryazgan8922 ปีที่แล้ว +1

    bence zor

  • @yasirelk2557
    @yasirelk2557 2 ปีที่แล้ว

    Mantığını anladım teşekkür ederim

  • @ChengeazZ
    @ChengeazZ ปีที่แล้ว

    decoratorun sonunda return wrapper yazma sebebimiz nedir tam olarak pythonda neler oluyor onu okuyunca?

  • @kihramcizadegiller
    @kihramcizadegiller ปีที่แล้ว

    bi nevi nesnelere benziyor sanki. girilen degerler il fonksiyonda işleniyor oradan sonuc döndürüyor..

  • @oyuncakbekcisi6345
    @oyuncakbekcisi6345 5 หลายเดือนก่อน

    return ile print arasındaki fark nedir hocam

  • @beyazdemir
    @beyazdemir 2 ปีที่แล้ว

    elinize sağlık

  • @kihramcizadegiller
    @kihramcizadegiller ปีที่แล้ว

    def kareleri_al(liste): fonksiyonu ile def zaman_hesapla(fonk): arasında nasıl bi bağlantı oluyor onu çözemedim..

    • @emirhankızıl-z9w
      @emirhankızıl-z9w 9 หลายเดือนก่อน

      şimdi diyelim sizin 100 tane fonk var ve gidip hepsinin kaç saniye sürdüğünü öğrenmek istiyorsunuz diyelim hocanın yaptığı ilk zaman_hesapla fonksiyonu ile biz burada bir zaman ölçmesini zaten yapıyoruz 1 tane fonk var ise istediğimiz çok kolay fakat 100 tane var diyelim hepsine teker teker gidip zaman ölçme fonksiyonu yazarsanız ne kadar zaman alıcağını işe yaramaz bir durum olur bir kere zaman hesapla fonk yazdıktan sonra onu yazdığımız bütün fonklarda kullanabiliriz @zaman_hesapla şeklinde fonksiyonun üzerine yazdığımız zaman bu zaman ölçme fonksiyonu otomatik hesaplayıp dışarı size vericektir
      örnek
      @zaman_hesapla
      def kareleri_al(liste):
      for i in liste:
      print(i*i)
      örnek kareleri_Al(liste)
      bu kareleri al fonk gidip zaman_hesapla(fonk) içerisinde ki fonk alıcak karelerial(liste) içinde ki liste de def wrapper(*args,**kwargs) içindeki args,kwargs değerlerini alıcaktır. neden args ve kwargs derseniz string olabilir int vesaire vesaire bunları önlemek adına ve isterseniz 100 tane değer girersiniz bunun içerisine

  • @cout1846
    @cout1846 3 ปีที่แล้ว

    çok iyiydi hocam eliniz sağlık

  • @acampschoola
    @acampschoola ปีที่แล้ว

    def decorator(func):
    print("operations before the function runs")
    func()
    print("operations after the function runs")
    @decorator
    def func2():
    print("function works") (7:42-de) wrapper-siz yazmiş olursak yine aynı neticeye varmış olmuyor muyuz?

    • @barbbarb2003
      @barbbarb2003 ปีที่แล้ว

      ulasırsın benım bıldgım paramaetre konun ıcıne gırdıgınde wrapper konuya dahıl olur

  • @varismail1328
    @varismail1328 2 ปีที่แล้ว

    satır başına import time yazmak şartmı ben yazmassamda fonksiyonu çalıştırabiliyorum ? olayı nedir .

    • @obligar
      @obligar ปีที่แล้ว

      Daha önceki örneklerin birinde yaptıysanızi kernel onu hatırladığı için sonraki örneklerde yazmasanızda bir kere import ettiğiniz için hata vermiyordur. Restart kernel derseniz ve tekrar denerseniz hata aldığınızı göreceksiniz..

  • @ilayda5012
    @ilayda5012 ปีที่แล้ว

    14:40 da neden return yazınca 30 vermedi de print yazınca verdi? Emeğinize sağlık çok teşekkürler videolar için:))

    • @medetak8620
      @medetak8620 ปีที่แล้ว

      Eğer return olduğunda ekrana yazdırmayı için
      print(topla(a,b)) böyle yapması lazim

  • @taylankarakaya3856
    @taylankarakaya3856 3 ปีที่แล้ว +1

    17.13 deki örnekte kare_fonk tanimlayip zaman hesaplanin icine argüment olarak kareleri_al fonksiyonunu koymussunuz ama tam olarak istediginiz örnegi veremediniz sanirim, cünkü normal kareleri al fonksiyonunu calistirdiniz ve girdiginiz listenin kareleri alindi. Zaman hesaplamasi yapilmadi yani.
    Anlatim icin tesekkürler

    • @pythonagiris5616
      @pythonagiris5616  3 ปีที่แล้ว +1

      Orada hafif bir tekrar yapıyorum . Dikkat ederseniz hemen öncesinde kareleri al fonksiyonun üstündeki @zaman_hesapla kısmını silmişim. Onu sildiğim için zaman ölçmüyor. Umarım açıklayabilmişimdir.

  • @suprememaster9502
    @suprememaster9502 2 ปีที่แล้ว

    hocam fonksiyon calisiyor fakat time foksyonu 0.0 saniye surdu diyor bu hata nerden kaynaklaniyor. Kodum bire bir ayni sizinkiylen

    • @obligar
      @obligar ปีที่แล้ว +1

      Kodunuzu paylaşırsanız neden 0.0 saniye sürdüğünü bulmak daha kolay olur..

  • @everythingishere8010
    @everythingishere8010 4 ปีที่แล้ว +1

    Böyle bir hata aldım .Her şey aynı !
    sonuc = fonk(*args, **kwargs)
    TypeError: karee_al() missing 1 required positional argument: 'liste'

    • @pythonagiris5616
      @pythonagiris5616  4 ปีที่แล้ว

      Merhaba görünüşe göre karee_al fonksiyonunuza liste parametresini göndermemişsiniz. isterseniz kodunuzu paylaşabilirsiniz.

    • @hazalsavran565
      @hazalsavran565 3 ปีที่แล้ว

      @@pythonagiris5616 bende aynı hatayı alıyorum birebir aynı kodu yazdım :(

    • @hazalsavran565
      @hazalsavran565 3 ปีที่แล้ว +1

      wrapper() şeklinde yazıyormuşum bu yüzden hata aldım pardon

  • @cagandogan669
    @cagandogan669 2 ปีที่แล้ว

    4. dakkadaki şeyi hangi vidyoda bahsediyorsun

    • @mehmet5886
      @mehmet5886 2 ปีที่แล้ว

      Ders29:fonksiyonlardan fonksiyon döndürme

  • @mikailtuncer4379
    @mikailtuncer4379 2 ปีที่แล้ว

    hocam yeter ki şişirin kafamı hiç problem değil

  • @serdaryazgan8922
    @serdaryazgan8922 ปีที่แล้ว

    anlamadım

  • @kihramcizadegiller
    @kihramcizadegiller ปีที่แล้ว

    @zaman_hesapla her fonksiyonun başına tek tek yazılmak zorunda mı?