#!/usr/bin/env python # coding: utf-8 # # Fonksiyonları Dönmek ve Argüman Olarak Göndermek # # Bu konuda fonksiyonları return ile başka bir fonksiyondan dönmeyi ve diğer fonksiyonlara parametre olarak göndermeyi öğreneceğiz. # ### Fonksiyonları return ile Dönmek # # Bir fonksiyon aynı zamanda bir obje olduğu için, bu fonksiyonu başka bir fonksiyondan **return** ile döndürebiliriz. # In[13]: def fonksiyon(işlem_adı): def toplama(*args): toplam = 0 for i in args: toplam += i return toplam def çarpma(*args): çarpım = 1 for i in args: çarpım *= i return çarpım if işlem_adı == "toplama": return toplama else: return çarpma # In[14]: deneme = fonksiyon("toplama") # In[22]: deneme # toplama fonksiyonuna eşit oldu. # In[23]: deneme(1,2,3,4,5,6,7) # In[24]: deneme2 = fonksiyon("çarpma") # In[25]: deneme2 # çarpma fonksiyonuna eşit oldu. # In[26]: deneme2(1,2,3,4,5,6,7,8,9) # İşte bu şekilde fonksiyonlarımızı da tıpkı diğer değişkenler gibi başka bir fonksiyon içinde tanımlayıp , çağırdığımız yere dönebiliriz. # ### Fonksiyonları Argüman Olarak Göndermek # In[27]: def toplama(a,b): return a + b def çıkarma(a,b): return a-b def çarpma(a,b): return a * b def bölme(a,b): return a / b # In[28]: def anafonksiyon(func1,func2,func3,func4,işlem_adı): # Tanımladığımız 4 fonksiyonu da argüman olarak göndereceğiz. if (işlem_adı == "toplama"): print(func1(3,4)) elif (işlem_adı == "çıkarma"): print(func2(10,3)) elif (işlem_adı == "çarpma"): print(func3(10,3)) elif (işlem_adı == "bölme"): print(func4(10,4)) else: print("Geçersiz işlem adı...") # In[29]: anafonksiyon(toplama,çıkarma,çarpma,bölme,"toplama") # In[30]: anafonksiyon(toplama,çıkarma,çarpma,bölme,"bölme") # Buradaki gibi her fonksiyonumuz aslında birer obje olduğu için diğer objeler gibi başka fonksiyonlara argüman olarak gönderilebilir. Bunları da öğrendiğimize göre artık decoratorlar için hazırız. # In[ ]: