Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mustafamuratcoskun
GitHub Repository: mustafamuratcoskun/Sifirdan-Ileri-Seviyeye-Python-Programlama
Path: blob/master/Pythondaki Decoratorlar/İç içe Fonksiyonlar ve Fonksiyon Parametreleri.ipynb
765 views
Kernel: Python 3

İç içe Fonksiyonlar ve Fonksiyon Parametreleri

Bu bölümle birlikte decorator fonksiyonların mantığını anlamaya çalışacağız. Decoratorları daha iyi anlamak için fonksiyonlara biraz daha derinlemesine bakmaya çalışalım.

*args ve **kwargs

Fonksiyonlara argüman göndermenin esnek bir şekilde yapıldığını biliyoruz. İsterseniz ilk olarak yıldızlı argümanları hatırlamaya çalışalım.

def fonksiyon(*args): # İstediğimiz sayıda argüman gönderebiliyoruz. print(args) for i in args: print(i)
fonksiyon(1,2,3)
(1, 2, 3) 1 2 3
fonksiyon(1,2,3,4,5)
(1, 2, 3, 4, 5) 1 2 3 4 5
def fonksiyon(isim,*args): print("İsim:",isim) for i in args: print(i)
fonksiyon("Murat",1,2,3,4,5,6,7,8)
İsim: Murat 1 2 3 4 5 6 7 8

Şimdi de yeni öğreneceğimiz keyword argümanlara bakalım.

def fonksiyon(**kwargs): print(kwargs)
fonksiyon(isim = "Murat", soyisim = "Coşkun", numara = 12345)
{'isim': 'Murat', 'soyisim': 'Coşkun', 'numara': 12345}

Dikkat ederseniz 2 yıldız koyarak keyword argümanlar ile (anahtar kelimeli argümanlar) fonksiyonumuzu tanımladık ve argümanlara isim vererek fonksiyonumuzu çağırdığımızda isimleri anahtar kelime , argüman değerlerini değer olarak alarak fonksiyonumuz sözlük oluşturdu. İşte keyword argümanlar bu şekilde kullanılabiliyor.

def fonksiyon(**kwargs): for i,j in kwargs.items(): print("Argüman İsmi:",i,"Argüman Değeri:",j)
fonksiyon(isim = "Murat", soyisim = "Coşkun", numara = 12345)
Argüman İsmi: isim Argüman Değeri: Murat Argüman İsmi: soyisim Argüman Değeri: Coşkun Argüman İsmi: numara Argüman Değeri: 12345

Şimdi de *args ve **kwargs argümanlarını beraber kullanalım.

def fonksiyon(*args,**kwargs): for i in args: print("Argümanlar:",i) print("------------------------------") for i ,j in kwargs.items(): print("Argüman İsmi:",i,"Argüman Değeri:",j)
fonksiyon(1,2,3,4,5,6,7,isim = "Murat",soyisim = "Coşkun", numara = 12345)
Argümanlar: 1 Argümanlar: 2 Argümanlar: 3 Argümanlar: 4 Argümanlar: 5 Argümanlar: 6 Argümanlar: 7 ------------------------------ Argüman İsmi: isim Argüman Değeri: Murat Argüman İsmi: soyisim Argüman Değeri: Coşkun Argüman İsmi: numara Argüman Değeri: 12345

İç içe fonksiyonlar

Pythonda fonksiyonlar da birer obje oldukları için hem bir tane değişkene atanabilirler, hem de başka bir fonksiyonun içinde tanımlanabilirler. Şimdi bunlara bakmaya başlayalım.

def selamla(isim): print("Selam",isim)
selamla("Ayşe")
Selam Ayşe
# Bir tane değişkene atıyoruz. merhaba = selamla
merhaba # Obje tipi fonksiyon oldu.
<function __main__.selamla>
selamla # Obje tipi fonksiyon
<function __main__.selamla>
merhaba("Ayşe") # Fonksiyon olduğu için artık bu isimle de kullanabilirim.
Selam Ayşe
del selamla # Selamla fonksiyonunu siliyorum.
selamla
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-36-476cfa688e53> in <module>() ----> 1 selamla NameError: name 'selamla' is not defined
merhaba("Kemal") # selamla objesi silinmesine rağmen merhaba objesi silinmedi.
Selam Kemal

Şimdi de isterseniz iç içe fonksiyon tanımlamayı öğrenelim.

def fonksiyon(): def fonksiyon2(): print("Küçük fonksiyondan Merhaba") print("Büyük fonksiyondan Merhaba") fonksiyon2() # Tanımladığım fonksiyonu kullanabilirim.
fonksiyon()
Büyük fonksiyondan Merhaba Küçük fonksiyondan Merhaba
fonksiyon2() # Lokal bir değişken olduğu için fonksiyon() çağrısından sonra yok oldu.
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-45-3ffe6a5f72a1> in <module>() ----> 1 fonksiyon2() # Lokal bir değişken olduğu için fonksiyon() çağrısından sonra yok oldu. NameError: name 'fonksiyon2' is not defined
def fonksiyon(*args): # args : (1,2,3,4,5,6) def topla(args): # (1,2,3,4,5,6) toplam = 0 for i in args: toplam += i return toplam print(topla(args))
fonksiyon(1,2,3,4,5,6)
21

İşte bu kadar ! Bir sonraki dersimizde fonksiyonlara devam edeceğiz.