Bu gibi bir operatör değil, bu yüzden gerçekten bir adı yok, ancak "sözdizimsel kural" olarak tanımlanır . Bu yüzden çağrılmalıdır:
- "anahtar kelime argümanı sözdizimini açma"
Eğer bir argümanlar listeniz varsa *args
, buna "paket açma argümanı"**kwargs
denir , aynı şekilde "anahtar sözcük argümanı açma" olarak da adlandırılır .
Bir sol taraftaki kullanırsanız =
, hem de a, *middle, end = my_tuple
, derdin ki "Başlık açma" .
Toplamda, üç tür (tek parametre) argüman vardır:
def f(x) # x: positional argument
def f(x, y=0) # y: keyword argument
def f(x, *xs, y=0) # y: keyword-only argument
*args
Argüman "değişken konumsal parametre" ve denir **kwargs
"değişken anahtar kelime parametresini" dir. Yalnızca anahtar sözcük argümanları konumsal olarak verilemez, çünkü değişken bir konumsal parametre ilettiğiniz tüm argümanları alır.
Bunun büyük kısmı PEP'lerden bulunabilir 0362 ve 3102 yılında olduğu gibi, Kontrol Akış dokümanlar bölümünde. Fonksiyon imzası nesnesi PEP'in sadece bir taslak olduğu ve terminolojinin sadece bir kişinin fikri olabileceği de belirtilmelidir. Ama yine de iyi şartlar. :)
Yani *
ve **
argümanlar sadece kendi veri yapılarını açar:
args = (1, 2, 3) # usually a tuple, always an iterable[1]
f(*args) → f(1, 2, 3)
# and
kwargs = {"a": 1, "b": 2, "c": 3} # usually a dict, always a mapping*
f(**kwargs) -> f(a=1, b=2, c=3)
[1]: Iterables uygulamak nesnelerdir __iter__()
yöntem ve eşlemeler uygulamak nesneleridir keys()
ve __getitem__()
. Bu protokolü destekleyen herhangi bir nesne kurucular tarafından anlaşılacak tuple()
ve dict()
böylece argümanları açmak için kullanılabilirler.