Python - İşlevler
İşlev, ilgili tek bir eylemi gerçekleştirmek için kullanılan organize, yeniden kullanılabilir bir kod bloğudur. Fonksiyonlar, uygulamanız için daha iyi modülerlik ve yüksek derecede kod yeniden kullanımı sağlar.
Zaten bildiğiniz gibi, Python size print () vb. Gibi birçok yerleşik işlev sunar, ancak kendi işlevlerinizi de oluşturabilirsiniz. Bu işlevlere kullanıcı tanımlı işlevler denir .
Bir Fonksiyonun Tanımlanması
Gerekli işlevselliği sağlamak için işlevler tanımlayabilirsiniz. Python'da bir işlevi tanımlamak için basit kurallar.
Fonksiyon blokları anahtar kelimeyle başlar def ardından işlev adı ve parantezler (()).
Herhangi bir girdi parametresi veya bağımsız değişken bu parantez içine yerleştirilmelidir. Bu parantezlerin içinde parametreleri de tanımlayabilirsiniz.
Bir işlevin ilk ifadesi isteğe bağlı bir ifade olabilir - işlevin veya docstring'in dokümantasyon dizesi .
Her işlevin içindeki kod bloğu iki nokta üst üste (:) ile başlar ve girintilidir.
Return [ifade] ifadesi, isteğe bağlı olarak çağırıcıya bir ifade geri göndererek bir işlevden çıkar. Bağımsız değişken içermeyen bir dönüş ifadesi, Hiçbiri döndürmeyle aynıdır.
Sözdizimi
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
Varsayılan olarak, parametrelerin konumsal bir davranışı vardır ve onları tanımlandıkları sırayla bilgilendirmeniz gerekir.
Misal
Aşağıdaki işlev, girdi parametresi olarak bir dizeyi alır ve standart ekrana yazdırır.
def printme( str ):
"This prints a passed string into this function"
print str
return
Bir Fonksiyon Çağırma
Bir fonksiyonun tanımlanması ona sadece bir isim verir, fonksiyona dahil edilecek parametreleri belirtir ve kod bloklarını yapılandırır.
Bir fonksiyonun temel yapısı tamamlandığında, onu başka bir fonksiyondan veya doğrudan Python komut isteminden çağırarak çalıştırabilirsiniz. Printme () işlevini çağırmak için örnek aşağıdadır -
#!/usr/bin/python
# 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("I'm first call to user defined function!")
printme("Again second call to the same function")
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
I'm first call to user defined function!
Again second call to the same function
Referans ve değere göre geçirme
Python dilindeki tüm parametreler (bağımsız değişkenler) referans olarak aktarılır. Bu, bir parametrenin bir işlev içinde neyi ifade ettiğini değiştirirseniz, değişikliğin çağrılan işleve geri yansıdığı anlamına gelir. Örneğin -
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist.append([1,2,3,4]);
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
Burada, aktarılan nesnenin referansını koruyor ve aynı nesneye değerler ekliyoruz. Yani, bu şu sonucu verecektir -
Values inside the function: [10, 20, 30, [1, 2, 3, 4]]
Values outside the function: [10, 20, 30, [1, 2, 3, 4]]
Argümanın referansla iletildiği ve çağrılan işlevin içinde referansın üzerine yazıldığı bir örnek daha var.
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4]; # This would assig 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. Fonksiyonu içinde MyList değiştirme etkilemez MyList . İşlev hiçbir şey başaramaz ve sonunda bu şu sonucu verir:
Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]
İşlev Bağımsız Değişkenleri
Aşağıdaki biçimsel 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 argümanlar
Gerekli argümanlar, bir işleve doğru konum sırasına göre iletilen argümanlardır. Burada, işlev çağrısındaki argümanların sayısı işlev tanımıyla tam olarak eşleşmelidir.
Printme () işlevini çağırmak için , kesinlikle bir bağımsız değişken geçirmeniz gerekir, aksi takdirde aşağıdaki gibi bir sözdizimi hatası verir -
#!/usr/bin/python
# 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 çalıştırıldığında, 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 argümanları
Anahtar kelime argümanları işlev çağrılarıyla ilgilidir. Bir işlev çağrısında anahtar sözcük bağımsız değişkenleri kullandığınızda, arayan, bağımsız değişkenleri parametre adına göre tanımlar.
Python yorumlayıcısı, değerleri parametrelerle eşleştirmek için sağlanan anahtar kelimeleri kullanabildiğinden, bu, argümanları atlamanıza veya bunları sıra dışı bırakmanıza olanak tanır. Ayrıca aşağıdaki şekillerde printme () işlevine anahtar sözcük aramaları da yapabilirsiniz -
#!/usr/bin/python
# 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 çalıştırıldığında, 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/python
# 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 çalıştırıldığında, aşağıdaki sonucu verir -
Name: miki
Age 50
Varsayılan argümanlar
Varsayılan bir bağımsız değişken, o bağımsız değişken için işlev çağrısında bir değer sağlanmadığında varsayılan bir değer kabul eden bir bağımsız değişkendir. Aşağıdaki örnek, varsayılan argümanlar hakkında bir fikir verir, geçirilmezse varsayılan yaşı yazdırır -
#!/usr/bin/python
# 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 çalıştırıldığında, aşağıdaki sonucu verir -
Name: miki
Age 50
Name: miki
Age 35
Değişken uzunluklu argümanlar
Fonksiyonu tanımlarken belirttiğinizden daha fazla argüman için bir fonksiyonu işlemeniz gerekebilir. Bu bağımsız değişkenler değişken uzunluklu bağımsız değişkenler olarak adlandırılır ve gerekli ve varsayılan bağımsız değişkenlerin aksine işlev tanımında adlandırılmaz.
Anahtar kelime olmayan değişken bağımsız değişkenlere sahip bir işlevin sözdizimi şudur:
def functionname([formal_args,] *var_args_tuple ):
"function_docstring"
function_suite
return [expression]
Tüm nonkeyword değişken bağımsız değişkenlerinin değerlerini tutan 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 demet boş kalır. Aşağıdaki basit bir örnektir -
#!/usr/bin/python
# 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 çalıştırıldığında, aşağıdaki sonucu verir -
Output is:
10
Output is:
70
60
50
Anonim Fonksiyonlar
Bu işlevler anonim olarak adlandırılır çünkü standart biçimde def anahtar sözcüğü kullanılarak 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 bir ifade biçiminde yalnızca bir değer döndürür. Komut veya birden çok ifade içeremezler.
Lambda bir ifade gerektirdiğinden, anonim bir işlev doğrudan yazdırma çağrısı olamaz
Lambda işlevlerinin kendi yerel ad alanları vardır ve kendi parametre listelerinde ve genel ad alanında bulunanlar dışındaki değişkenlere erişemez.
Lambda'lar bir işlevin tek satırlık bir sürümü gibi görünse de, C veya C ++ 'daki satır içi ifadelere eşdeğer değildirler, amacı performans nedenleriyle çağırma sırasında işlev yığını tahsisini iletmektir.
Sözdizimi
Lambda işlevlerinin sözdizimi yalnızca aşağıdaki gibi tek bir ifade içerir -
lambda [arg1 [,arg2,.....argn]]:expression
Lambda işlevinin nasıl çalıştığını gösteren örnek aşağıdadır -
#!/usr/bin/python
# 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 çalıştırıldığında, aşağıdaki sonucu verir -
Value of total : 30
Value of total : 40
dönüş Bildirimi
Return [ifade] ifadesi, isteğe bağlı olarak çağırıcıya bir ifade geri göndererek bir işlevden çıkar. Bağımsız değişken içermeyen bir dönüş ifadesi, Hiçbiri döndürmeyle aynıdır.
Yukarıdaki örneklerin tümü herhangi bir değer vermemektedir. Bir işlevden aşağıdaki gibi bir değer döndürebilirsiniz -
#!/usr/bin/python
# 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 çalıştırıldığında, aşağıdaki sonucu verir -
Inside the function : 30
Outside the function : 30
Değişkenlerin Kapsamı
Bir programdaki tüm değişkenlere o programdaki tüm konumlardan erişilemeyebilir. Bu, bir değişkeni nerede tanımladığınıza bağlıdır.
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
Global ve Yerel değişkenler
Bir işlev gövdesi içinde tanımlanan değişkenlerin yerel bir kapsamı vardır ve dışında tanımlananların genel bir kapsamı vardır.
Bu, yerel değişkenlere yalnızca bildirildikleri işlev içinde erişilebileceği, oysa küresel değişkenlere tüm işlevler tarafından program gövdesi boyunca erişilebileceği anlamına gelir. Bir işlevi çağırdığınızda, içinde bildirilen değişkenler kapsama alınır. Aşağıdaki basit bir örnektir -
#!/usr/bin/python
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 çalıştırıldığında, aşağıdaki sonucu verir -
Inside the function local total : 30
Outside the function global total : 0