koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da args ve kwargs kullanımı

args ve kwargs için sözdizimi * ve **‘dır; yani *args ve **kwargs. Bu değişken isimleri artıtk gelenekselleştiği için bu şekilde kullanılır, ama tabi bu kullanım bir kural değil.

İşlevimizde kaç bağımsız değişken kullanacağımızdan emin değilsek, yani işlevinize rasgele sayıda bağımsız değişken geçireceksek *args kullanırız:

>>> def print_everything(*args):
        for count, thing in enumerate(args):
...         print( '{0}. {1}'.format(count, thing))
...
>>> print_everything('apple', 'banana', 'cabbage')
0. apple
1. banana
2. cabbage

**kwargs‘da benzer şekilde çalışır ancak kwargs, önceden tanımlamadığımız adlandırılmış bağımsız değişkenleri işlememizi sağlar:

>>> def table_things(**kwargs):
...     for name, value in kwargs.items():
...         print( '{0} = {1}'.format(name, value))
...
>>> table_things(apple = 'fruit', cabbage = 'vegetable')
cabbage = vegetable
apple = fruit

*args ve *kwargs‘ı adlandırılmış bağımsız değişkenlerle birlikte de kullanabiliriz. Fonksiyonda önce bağımsız değişkenler değerlerini alır, sonra kalan diğer her şey *args ve *kwkargs‘a geçirilir. Adlandırılmış bağımsız değişkenler listede ilk sırada gelir.

def table_things(titlestring, **kwargs)

*args ve *kwargs‘ın her ikisini de aynı işlev tanımında kullanabiliriz, ancak *args‘ın daha önce gelmesi gerekir.

Ayrıca, bir işlevi çağırırken * ve ** sözdizimini de kullanabiliriz. Mesela:

>>> def print_three_things(a, b, c):
...     print( 'a = {0}, b = {1}, c = {2}'.format(a,b,c))
...
>>> mylist = ['aardvark', 'baboon', 'cat']
>>> print_three_things(*mylist)
a = aardvark, b = baboon, c = cat

Bu örnekte görebileceğiniz gibi bir liste (veya demet (tuple)) alır ve bunu değişkenlere açar. Böylece, liste öğelerini işlevdeki bağımsız değişkenlerle eşleştirir. Tabii ki, hem işlev tanımında hem de işlev çağrısında * kullanabiliriz.

Bir yanıt yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top