İş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


Kategoriler: Python

0 yorum

Bir Cevap Yazın