na huruhusu function kupokea ya arguments. hukusanya arguments za ziada katika tuple; hukusanya arguments za ziada katika dict. (Majina ni desturi — na ndizo zinazomaanisha.)
na huruhusu function kupokea ya arguments. hukusanya arguments za ziada katika tuple; hukusanya arguments za ziada katika dict. (Majina ni desturi — na ndizo zinazomaanisha.)
*args**kwargs*args**kwargs***def total(*args): # collects all positional args into a tuple
print(args) # e.g. (1, 2, 3)
return sum(args)
total(1, 2, 3) # 6
total(1, 2, 3, 4, 5) # 15 — any number of args
def configure(**kwargs): # collects keyword args into a dict
print(kwargs) # e.g. {"host": "localhost", "port": 8080}
for key, value in kwargs.items():
print(f"{key} = {value}")
configure(host="localhost", port=8080, debug=True)
def func(a, b, *args, **kwargs):
# a, b → required positional
# args → extra positional (tuple)
# kwargs → extra keyword (dict)
...
func(1, 2, 3, 4, x=5, y=6)
# a=1, b=2, args=(3, 4), kwargs={"x": 5, "y": 6}
Mpangilio unaohitajika ni: parameters za kawaida, kisha *args, kisha **kwargs.
# `*` and `**` also UNPACK collections INTO arguments at the call site
numbers = [1, 2, 3]
total(*numbers) # same as total(1, 2, 3)
settings = {"host": "x", "port": 80}
configure(**settings) # same as configure(host="x", port=80)
Syntax hiyo hiyo hutenganisha (unpack) list/dict kuwa positional/keyword arguments — rahisi kwa kupeleka arguments.
def wrapper(*args, **kwargs):
# accept ANY arguments and pass them through unchanged
return original_func(*args, **kwargs)
Muundo huu wa kupitisha ndio jinsi decorators na wrapper functions hushughulikia signature yoyote ya function.
*args/**kwargs huwezesha signatures za function zinazonyumbulika zinazopokea idadi yoyote ya arguments — muhimu kwa kuandika utilities za matumizi ya jumla, wrappers, na hasa decorators (ambazo lazima zifunike functions zenye signatures zisizojulikana kupitia *args, **kwargs).
Mwelekeo wa unpacking (*list, **dict) ni muhimu sawa kwa kupeleka au kueneza arguments.
Kuelewa zote mbili — kukusanya na unpacking — ni ufunguo wa kuandika code ya Python inayoweza kutumika tena na ya jumla, na kusoma APIs nyingi za library na decorators zinazotegemea vipengele hivi.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia