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ş:
Python dosya uzantılarını şeyi yapar ....
Yüzde kodlamak için nasıl python ile u...
Uygulama ASP.NET kuyruklu yıldız için?...
C işaretçi: işareti kullanmak için zam...
Neden @foo yapar.pasör Python benim iç...