Tek yıldız *
, diziyi / koleksiyonu konumsal argümanlara ayırır, böylece bunu yapabilirsiniz:
def sum(a, b):
return a + b
values = (1, 2)
s = sum(*values)
Bu, tuple'ı şu şekilde yürütecek şekilde açacaktır:
s = sum(1, 2)
Çift yıldız **
da aynı şeyi yapar, sadece bir sözlük ve dolayısıyla adlandırılmış argümanlar kullanarak:
values = { 'a': 1, 'b': 2 }
s = sum(**values)
Ayrıca şunları da birleştirebilirsiniz:
def sum(a, b, c, d):
return a + b + c + d
values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }
s = sum(*values1, **values2)
şu şekilde yürütülecek:
s = sum(1, 2, c=10, d=15)
Ayrıca Python belgelerinin 4.7.4 - Bağımsız Değişken Listelerini Açma bölümüne bakın .
Ek olarak, alacak işlevleri *x
ve **y
bağımsız değişkenleri tanımlayabilirsiniz , bu, bir işlevin bildirimde özel olarak adlandırılmayan herhangi bir sayıda konumsal ve / veya adlandırılmış bağımsız değişkeni kabul etmesine izin verir.
Misal:
def sum(*values):
s = 0
for v in values:
s = s + v
return s
s = sum(1, 2, 3, 4, 5)
veya ile **
:
def get_a(**values):
return values['a']
s = get_a(a=1, b=2)
bu, onları bildirmek zorunda kalmadan çok sayıda isteğe bağlı parametre belirlemenize izin verebilir.
Ve yine şunları birleştirebilirsiniz:
def sum(*values, **options):
s = 0
for i in values:
s = s + i
if "neg" in options:
if options["neg"]:
s = -s
return s
s = sum(1, 2, 3, 4, 5)
s = sum(1, 2, 3, 4, 5, neg=True)
s = sum(1, 2, 3, 4, 5, neg=False)
*
ve**
bu sözdizimi ile ilgisi olduğunu operatörü.