Python'da, değişken sayıda argüman alan bir işlev tanımlayabilirsiniz. Bu makalede, varsayılan, anahtar sözcük ve keyfi argümanlar kullanarak bu tür işlevleri tanımlamayı öğreneceksiniz.
Video: Python İşlev Bağımsız Değişkenleri: Konumsal, Anahtar Sözcükler ve Varsayılan
Argümanlar
Kullanıcı tanımlı işlev konusunda, bir işlevi tanımlamayı ve onu çağırmayı öğrendik. Aksi takdirde, işlev çağrısı bir hatayla sonuçlanacaktır. İşte bir örnek.
def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")
Çıktı
Merhaba Monica, Günaydın!
Burada fonksiyonun greet()
iki parametresi vardır.
Bu fonksiyonu iki argümanla çağırdığımız için sorunsuz çalışıyor ve herhangi bir hata almıyoruz.
Onu farklı sayıda argümanla çağırırsak, yorumlayıcı bir hata mesajı gösterecektir. Aşağıda, bu işleve, ilgili hata mesajlarının yanı sıra bir bağımsız değişken içeren bir çağrı verilmiştir.
>>> greet ("Monica") # yalnızca bir bağımsız değişken TypeError: greet () gerekli 1 konumsal bağımsız değişken eksik: 'msg'
>>> greet () # bağımsız değişken yok TypeError: greet () gerekli 2 konumsal bağımsız değişken eksik: 'ad' ve 'msg'
Değişken Fonksiyon Bağımsız Değişkenleri
Şimdiye kadar, işlevlerin sabit sayıda argümanı vardı. Python'da, değişken sayıda argüman alabilen bir işlevi tanımlamanın başka yolları da vardır.
Bu türün üç farklı biçimi aşağıda açıklanmaktadır.
Python Varsayılan Bağımsız Değişkenleri
Fonksiyon argümanları Python'da varsayılan değerlere sahip olabilir.
Atama operatörünü (=) kullanarak bir argümana varsayılan bir değer sağlayabiliriz. İşte bir örnek.
def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")
Çıktı
Merhaba Kate, Günaydın! Merhaba Bruce, Nasılsın?
Bu işlevde, parametrenin name
varsayılan bir değeri yoktur ve çağrı sırasında gereklidir (zorunludur).
Öte yandan, parametrenin msg
varsayılan değeri vardır "Good morning!"
. Bu nedenle, görüşme sırasında isteğe bağlıdır. Bir değer sağlanırsa, varsayılan değerin üzerine yazılır.
Bir işlevdeki herhangi bir sayıda bağımsız değişken varsayılan bir değere sahip olabilir. Ancak varsayılan bir argümanımız olduğunda, onun sağındaki tüm argümanların da varsayılan değerlere sahip olması gerekir.
Bu, varsayılan olmayan argümanların varsayılan argümanları takip edemeyeceği anlamına gelir. Örneğin, yukarıdaki fonksiyon başlığını şu şekilde tanımlamış olsaydık:
def greet (msg = "Günaydın!", ad):
Şu şekilde bir hata alırız:
SyntaxError: varsayılan olmayan bağımsız değişken, varsayılan bağımsız değişkeni izler
Python Anahtar Kelime Bağımsız Değişkenleri
Bazı değerlere sahip bir fonksiyon çağırdığımızda, bu değerler pozisyonlarına göre argümanlara atanır.
Örneğin, yukarıdaki işlevde greet()
, onu olarak adlandırdığımızda greet("Bruce", "How do you do?")
, değer "Bruce"
argüman adına atanır ve benzer "How do you do?"
şekilde msg.
Python, işlevlerin anahtar kelime argümanları kullanılarak çağrılmasına izin verir. Fonksiyonları bu şekilde çağırdığımızda, argümanların sırası (konumu) değiştirilebilir. Yukarıdaki işleve yapılan aşağıdaki çağrıların tümü geçerlidir ve aynı sonucu verir.
# 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?")
Gördüğümüz gibi, bir fonksiyon çağrısı sırasında konumsal argümanları anahtar kelime argümanlarıyla karıştırabiliriz. Ancak, anahtar kelime argümanlarının konumsal argümanları takip etmesi gerektiğini unutmamalıyız.
Anahtar kelime bağımsız değişkenlerinden sonra konumsal bir bağımsız değişkene sahip olmak hatalara neden olur. Örneğin, işlev şu şekilde çağrılır:
greet(name="Bruce","How do you do?")
Bir hataya neden olur:
SyntaxError: anahtar sözcük arg'den sonra anahtar kelime olmayan arg
Python Keyfi Argümanlar
Bazen, bir işleve aktarılacak argümanların sayısını önceden bilmiyoruz. Python, bu tür durumları, keyfi sayıda argüman içeren işlev çağrıları aracılığıyla ele almamıza izin verir.
Fonksiyon tanımında, bu tür bir argümanı belirtmek için parametre adından önce bir yıldız işareti (*) kullanırız. İşte bir örnek.
def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")
Çıktı
Merhaba Monica Merhaba Luke Merhaba Steve Merhaba John
Burada, birden çok argüman içeren işlevi çağırdık. Bu argümanlar, işleve aktarılmadan önce bir başlığa sarılır. Fonksiyonun içinde, for
tüm argümanları geri almak için bir döngü kullanırız.