İşlev, tek bir ilgili eylemi gerçekleştirmek için kullanılan organize, yeniden kullanılabilir kod bloğudur. İşlevler, uygulamanız için daha iyi modülerlik ve yüksek derecede kod kullanımı sağlar.
Bildiğiniz gibi, Python size print () gibi birçok yerleşik işlev sunar, ancak kendi işlevlerinizi de oluşturabilirsiniz. Bu fonksiyonlara kullanıcı tanımlı fonksiyonlardenir .
Bir İşlev Tanımlama
Gerekli işlevselliği sağlamak için işlevleri tanımlayabilirsiniz. Python’da bir fonksiyon tanımlamak için basit kurallar.
- İşlev blokları, def anahtar sözcüğünden sonra gelen işlev ismi ve parantez (()) ile başlar.
- Herhangi bir giriş parametresi veya argüman bu parantez içine yerleştirilmelidir. Bu parantez içindeki parametreleri de tanımlayabilirsiniz.
- Fonksiyon ya dokümantasyonu dize – bir fonksiyonun ilk ifadesi isteğe bağlı bir açıklama olabilir docstringe .
- Her fonksiyon içindeki kod bloğu iki nokta üst üste (:) ile başlar ve girintilidir.
- Deyim return [ifade], isteğe bağlı olarak bir ifadeyi arayana geri ileten bir işlevden çıkar. Argümanı olmayan bir return ifadesi return Yok ile aynıdır.
Sözdizimi
def functionname( parameters ): "function_docstring" function_suite return [expression]
Varsayılan olarak, parametrelerin konumsal bir davranışı vardır ve bunları tanımlandıkları sırayla bilgilendirmeniz gerekir.
Örnek
Aşağıdaki fonksiyon bir giriş parametresi olarak bir dizge alır ve standart ekrana basar.
def printme( str ): "This prints a passed string into this function" print (str) return
İşlev Çağrısı
Bir fonksiyon tanımlamak ona bir ad verir, fonksiyona dahil edilecek parametreleri belirtir ve kod bloklarını yapılandırır.
Bir işlevin temel yapısı tamamlandıktan sonra, onu başka bir işlevden veya doğrudan Python isteminden çağırarak çalıştırabilirsiniz. Printme () işlevini çağırmak için bir örnek aşağıdadır.
#!/usr/bin/python3 # Function definition is here def printme( str ): "This prints a passed string into this function" print (str) return # Now you can call printme function printme("This is first call to the user defined function!") printme("Again second call to the same function")
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir.
This is first call to the user defined function! Again second call to the same function
Referansa Göre Değer
Python dilinde tüm parametreler (argümanlar) referans olarak iletilir. Bu, bir parametrenin işlev içinde neye başvurduğunu değiştirirseniz, değişiklik aynı zamanda çağrı işlevine de yansır.
#!/usr/bin/python3 # Function definition is here def changeme( mylist ): "This changes a passed list into this function" print ("Values inside the function before change: ", mylist) mylist[2]=50 print ("Values inside the function after change: ", mylist) return # Now you can call changeme function mylist = [10,20,30] changeme( mylist ) print ("Values outside the function: ", mylist)
Burada, aktarılan nesnenin referansını koruyoruz ve aynı nesneye değer ekliyoruz. Bu nedenle, bu aşağıdaki sonucu doğurur:
Values inside the function before change: [10, 20, 30] Values inside the function after change: [10, 20, 50] Values outside the function: [10, 20, 50]
Argümanın referans yoluyla iletildiği ve referansın çağrılan fonksiyonun üzerine yazıldığı bir örnek daha var.
#!/usr/bin/python3 # Function definition is here def changeme( mylist ): "This changes a passed list into this function" mylist = [1,2,3,4] # This would assi new reference in mylist print ("Values inside the function: ", mylist) return # Now you can call changeme function mylist = [10,20,30] changeme( mylist ) print ("Values outside the function: ", mylist)
Mylist parametresi , fonksiyon değişikliği için yereldir. İşlev içindeki metilin değiştirilmesi metili etkilemez. İşlev hiçbir şey yapmaz ve sonunda bu, aşağıdaki sonucu verir –
Values inside the function: [1, 2, 3, 4] Values outside the function: [10, 20, 30]
İşlev Argümanları
Aşağıdaki resmi argüman türlerini kullanarak bir işlevi çağırabilirsiniz –
- Gerekli argümanlar
- Anahtar kelime argümanları
- Varsayılan argümanlar
- Değişken uzunluklu argümanlar
Gerekli Bağımsız Değişkenler
Gerekli argümanlar bir işleve doğru konum sırasına göre verilen argümanlardır. Burada, işlev çağrısındaki argümanların sayısı işlev tanımı ile tam olarak eşleşmelidir.
Printme () işlevini çağırmak için kesinlikle bir argüman iletmeniz gerekir, aksi takdirde aşağıdaki gibi bir sözdizimi hatası verir.
#!/usr/bin/python3 # Function definition is here def printme( str ): "This prints a passed string into this function" print (str) return # Now you can call printme function printme()
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)
Anahtar Kelime Bağımsız Değişkenleri
Anahtar sözcük argümanları fonksiyon çağrılarıyla ilgilidir. Bir işlev çağrısında anahtar sözcük argümanlarını kullandığınızda, arayan, argümanları parametre adına göre tanımlar.
Bu, Python yorumlayıcısı, değerleri parametrelerle eşleştirmek için sağlanan anahtar kelimeleri kullanabildiğinden, bağımsız değişkenleri atlamanıza veya bunları sıra dışı bırakmanıza olanak tanır. Ayrıca, printme () işlevine anahtar kelime aramalarını aşağıdaki şekillerde de yapabilirsiniz.
#!/usr/bin/python3 # Function definition is here def printme( str ): "This prints a passed string into this function" print (str) return # Now you can call printme function printme( str = "My string")
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
My string
Aşağıdaki örnek daha net bir resim vermektedir. Parametrelerin sırasının önemli olmadığını unutmayın.
#!/usr/bin/python3 # Function definition is here def printinfo( name, age ): "This prints a passed info into this function" print ("Name: ", name) print ("Age ", age) return # Now you can call printinfo function printinfo( age = 50, name = "miki" )
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Name: miki Age 50
Varsayılan Bağımsız Değişkenler
Varsayılan argüman, bu argüman için işlev çağrısında bir değer sağlanmazsa, varsayılan bir değer varsayan bir argümandır. Aşağıdaki örnek varsayılan argümanlar hakkında bir fikir verir, geçilmezse varsayılan yaşı yazdırır .
#!/usr/bin/python3 # Function definition is here def printinfo( name, age = 35 ): "This prints a passed info into this function" print ("Name: ", name) print ("Age ", age) return # Now you can call printinfo function printinfo( age = 50, name = "miki" ) printinfo( name = "miki" )
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Name: miki Age 50 Name: miki Age 35
Değişken uzunluklu Argümanlar
Bir işlevi tanımlarken tanımladığınızdan daha fazla argüman için bir işlem yapmanız gerekebilir. Bu argümanlar değişken uzunluklu argümanlar olarak adlandırılır ve gerekli ve varsayılan argümanların aksine, işlev tanımında adlandırılmaz.
Anahtar sözcük olmayan değişken bağımsız değişkenleri olan bir işlevin sözdizimi aşağıda verilmiştir –
def functionname([formal_args,] *var_args_tuple ): "function_docstring" function_suite return [expression]
Anahtar sözcük olmayan değişken bağımsız değişkenlerinin değerlerini içeren değişken adının önüne bir yıldız işareti (*) yerleştirilir. İşlev çağrısı sırasında ek argüman belirtilmezse, bu kayıt boş kalır. Aşağıdaki basit bir örnek
#!/usr/bin/python3 # Function definition is here def printinfo( arg1, *vartuple ): "This prints a variable passed arguments" print ("Output is: ") print (arg1) for var in vartuple: print (var) return # Now you can call printinfo function printinfo( 10 ) printinfo( 70, 60, 50 )
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Output is: 10 Output is: 70 60 50
Anonim İşlevler
Bu işlevlere anonim adı verilir, çünkü def anahtar sözcüğü kullanılarak standart biçimde bildirilmezler . Küçük anonim işlevler oluşturmak için lambda anahtar sözcüğünü kullanabilirsiniz .
- Lambda formları herhangi bir sayıda bağımsız değişken alabilir, ancak ifade biçiminde yalnızca bir değer döndürür. Komutlar veya çoklu ifadeler içeremezler.
- Anonim bir işlev yazdırmak için doğrudan bir çağrı olamaz, çünkü lambda bir ifade gerektirir.
- Lambda işlevlerinin kendi yerel ad alanları vardır ve parametre listesindeki ve genel ad alanındaki parametreler dışındaki değişkenlere erişemezler.
- Her ne kadar lambdas bir fonksiyonun tek satırlık bir versiyonu gibi görünse de, performans nedenleriyle başlatma sırasında fonksiyonu geçerek tahsisi istemek olan C veya C ++ ‘da satır içi ifadelere eşdeğer değildir.
Sözdizimi
Lambda işlevlerinin sözdizimi, aşağıdaki gibi yalnızca tek bir deyim içerir –
lambda [arg1 [,arg2,.....argn]]:expression
Aşağıdaki fonksiyonun lambda fonksiyonunun nasıl çalıştığını gösteren bir örnek
#!/usr/bin/python3 # Function definition is here sum = lambda arg1, arg2: arg1 + arg2 # Now you can call sum as a function print ("Value of total : ", sum( 10, 20 )) print ("Value of total : ", sum( 20, 20 ))
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Value of total : 30 Value of total : 40
İade bildirimi
Deyim return [ifade], isteğe bağlı olarak bir ifadeyi arayana geri ileten bir işlevden çıkar. Argümanı olmayan bir return ifadesi return Yok ile aynıdır.
Aşağıda verilen tüm örnekler herhangi bir değer vermemektedir. İşlevden bir değeri aşağıdaki gibi döndürebilirsiniz.
#!/usr/bin/python3 # Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2 print ("Inside the function : ", total) return total # Now you can call sum function total = sum( 10, 20 ) print ("Outside the function : ", total )
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Inside the function : 30 Outside the function : 30
Değişkenlerin Kapsamı
Bir programdaki tüm değişkenler o programdaki tüm konumlarda erişilebilir olmayabilir. Bu, değişken tanımladığınız yere göre değişir.
Bir değişkenin kapsamı, programın belirli bir tanımlayıcıya erişebileceğiniz bölümünü belirler. Python’da iki temel değişken kapsamı vardır –
- Global değişkenler
- Yerel değişkenler
Küresel ve Yerel değişkenler
Bir işlev gövdesinde tanımlanan değişkenlerin yerel bir kapsamı vardır ve dışarıda tanımlananların genel kapsamı vardır.
Bu, yerel değişkenlere yalnızca bildirildikleri işlev içinde erişilebilirken, genel değişkenlere program genelinde tüm işlevlerle erişilebileceği anlamına gelir. Bir işlev çağırdığınızda, içinde bildirilen değişkenler kapsam içine alınır. Aşağıdaki basit bir örnek
#!/usr/bin/python3 total = 0 # This is global variable. # Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2; # Here total is local variable. print ("Inside the function local total : ", total) return total # Now you can call sum function sum( 10, 20 ) print ("Outside the function global total : ", total )
Yukarıdaki kod yürütüldüğünde, aşağıdaki sonucu verir –
Inside the function local total : 30 Outside the function global total : 0
Kaynak: https://www.tutorialspoint.com/python3/python_functions.htm