SORU
31 AĞUSTOS 2008, Pazar


** (Çift yıldız) ve * (yıldız) Python parametreleri için ne yapar?

Aşağıdaki yöntem çağrıları, * ** param2 için ne yapar?

def foo(param1, *param2):
def bar(param1, **param2):

CEVAP
31 AĞUSTOS 2008, Pazar


*args **kwargs Python belgelerinde fonksiyonları bölümünde açıklandığı gibi more on defining functions bağımsız keyfi sayıda izin vermek için yaygın bir deyim vardır.

*args tüm fonksiyon parametreleri as a tuple verecektir:

In [1]: def foo(*args):
   ...:     for a in args:
   ...:         print a
   ...:         
   ...:         

In [2]: foo(1)
1


In [4]: foo(1,2,3)
1
2
3

**kwargs tüm verecektir anahtar kelime argümanlarbu resmi bir parametreye karşılık gelen dışında bir sözlük gibi.

In [5]: def bar(**kwargs):
   ...:     for a in kwargs:
   ...:         print a, kwargs[a]
   ...:         
   ...:         

In [6]: bar(name='one', age=27)
age 27
name one

Hem cümleler normal Değişkenler ile sabit ve bazı bağımsız değişken bir dizi sağlamak için karışık olabilir:

def foo(kind, *args, **kwargs):
   pass

*l deyim başka bir kullanım içinpaketten bağımsız değişken listesibir fonksiyonu çağırırken.

In [9]: def foo(bar, lee):
   ...:     print bar, lee
   ...:     
   ...:     

In [10]: l = [1,2]

In [11]: foo(*l)
1 2

Python 3'te olası bir atamanın sol tarafında (Extended Iterable Unpacking) *l kullanmak için:

first, *rest = [1,2,3,4]
first, *l, last = [1,2,3,4]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • Kindness

    Kindness

    23 Ocak 2006
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009