Python 3 - İş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, dönüş 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 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 bir isim 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 komut isteminden çağırarak çalıştırabilirsiniz. Aşağıdakileri aramak için bir örnekprintme() işlev -

#!/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 çalıştırıldığında, aşağıdaki sonucu verir -

This is first call to the user defined function!
Again second call to the same function

Referans ile Değer Karşılaştırması

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ğıran işleve geri yansıdığı anlamına gelir. Örneğin -

#!/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ı koruyor ve aynı nesneye değerler ekliyoruz. Bu nedenle, bu aşağıdaki sonucu verecektir -

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 referansla iletildiği ve çağrılan işlevin içinde referansın ü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)

Parametre mylistfonksiyon değişikliği için yereldir. Listenin işlev içinde değiştirilmesi, mylist'i etkilemez. İş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.

Fonksiyonu çağırmak için printme(), kesinlikle bir bağımsız değişken geçirmeniz 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 ç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 Bağımsız Değişkenleri

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, anahtar kelime aramaları da yapabilirsiniz.printme() aşağıdaki şekillerde işlev görü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( 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/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 çalıştırıldığında, aşağıdaki sonucu verir -

Name:  miki
Age  50

Varsayılan Bağımsız Değişkenler

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/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 çalıştırıldığında, aşağıdaki sonucu verir -

Name:  miki
Age  50
Name:  miki
Age  35

Değişken uzunluklu bağımsız değişkenler

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 aşağıda verilmiştir -

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/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 çalıştırıldığında, aşağıdaki sonucu verir -

Output is:
10
Output is:
70
60
50

Anonim İşlevler

Bu işlevler anonim olarak adlandırılır çünkü bunlar standart şekilde bildirilmezler. defanahtar kelime. Kullanabilirsinizlambda küçük anonim işlevler oluşturmak için anahtar sözcük.

  • 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.

  • Lambdalar bir işlevin tek satırlık bir sürümü gibi görünse de, performans nedenleriyle çağırma sırasında işlevi ileterek ayırmayı yığınlamak olan C veya C ++ 'daki satır içi ifadelere eşdeğer değildirler.

Sözdizimi

Sözdizimi lambda işlevler yalnızca aşağıdaki gibi tek bir ifade içerir -

lambda [arg1 [,arg2,.....argn]]:expression

Nasıl olduğunu gösteren bir örnek aşağıdadır lambda işlev biçimi çalışır -

#!/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 ç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, dönüş Yok ile aynıdır.

Aşağıda verilen tüm örnekler herhangi bir değer vermemektedir. Bir işlevden aşağıdaki gibi bir değer 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 ç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/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 çalıştırıldığında, aşağıdaki sonucu verir -

Inside the function local total :  30
Outside the function global total :  0