முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 5 · பாடம் 3 இன் 4பாடத்திட்டத்தில் 19/36~12 min
தொகுதி பாடங்கள் (3/4)

*args மற்றும் **kwargs

சில நேரங்களில் நீங்கள் ஒரு மாறி எண்ணை ஏற்றுக்கொள்ளும் செயல்பாடு வேண்டும் வாதங்கள். பைதான் உங்களுக்கு இரண்டு கருவிகளை வழங்குகிறது: *args (நிலை வாதங்களை சேகரிக்கிறது ஒரு டூப்பிள்) மற்றும் **kwargs (முக்கிய வாதங்களை ஒரு ஆணையாகச் சேகரிக்கிறது).

*args: மாறி நிலை வாதங்கள்

Python
def somma_tutto(*nums):
    totale = 0
    for n in nums:
        totale += n
    return totale

somma_tutto(1, 2, 3)         # 6
somma_tutto(1, 2, 3, 4, 5)   # 15
somma_tutto()                # 0

செயல்பாட்டின் உள்ளே, nums என்பது ஒரு tuple அனைத்து மதிப்புகளும் அனுப்பப்பட்டது. தி பெயர் ஒரு மாநாடு மட்டுமே: *args மிகவும் பொதுவானது, ஆனால் *nums அல்லது *valori முற்றிலும் செல்லுபடியாகும்.

**kwargs: மாறி முக்கிய மதிப்புருக்கள்

Python
def crea_config(**opzioni):
    return opzioni

crea_config(debug=True, port=8080)
# {'debug': True, 'port': 8080}

செயல்பாட்டின் உள்ளே, opzioni என்பது {param_name: value} உடன் டிக்ட் ஆகும்.

அனைத்தையும் இணைத்தல்

நிலையான வரிசை: ** வழக்கமான அளவுருக்கள், * args, இயல்புநிலை அளவுருக்கள், **kwargs**.

Python
def f(primo, *args, opzione="x", **kwargs):
    print(primo, args, opzione, kwargs)

f(1, 2, 3, opzione="y", extra=10)
# 1 (2, 3) y {'extra': 10}

அழைப்பில் திறக்கிறது: * மற்றும் **

அதே ஆபரேட்டர் வேறு வழியில் செயல்படுகிறார்: ஒரு பட்டியல்/டூப்ளை "வெடிப்பதற்கு" நிலை வாதங்கள் அல்லது முக்கிய வாதங்களில் ஒரு கட்டளை.

Python
def punto(x, y, z):
    return (x, y, z)

coords = [1, 2, 3]
punto(*coords)        # punto(1, 2, 3)  →  (1, 2, 3)

opts = {"x": 1, "y": 2, "z": 3}
punto(**opts)         # punto(x=1, y=2, z=3)

ரேப்பர் பேட்டர்ன்

Python
def log_chiamata(fn, *args, **kwargs):
    print(f"chiamo {fn.__name__} con {args=} {kwargs=}")
    return fn(*args, **kwargs)

log_chiamata(max, 3, 1, 2)             # calls max(3, 1, 2)
log_chiamata(sorted, [3, 1, 2], reverse=True)

செயல்பாடு கையொப்பங்களில் அளவுரு வரிசைப்படுத்துதல்

பல வாத வகைகளை ஏற்கும் செயல்பாட்டை வரையறுக்கும் போது, ​​கையொப்பத்தில் கண்டிப்பான வரிசையை நீங்கள் கடைபிடிக்க வேண்டும்:

  1. நிலையான நிலை அளவுருக்கள்.
  2. நிலை varargs *args.
  3. இயல்புநிலை மதிப்புகளுடன் முக்கிய அளவுருக்கள்.
  4. முக்கிய வார்த்தை varargs **kwargs.

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#python.m5.l3.e1
முயற்சிகள்: 0ஏற்றுகிறது…

எண்கணித சராசரியை (தொகை / எண்ணிக்கை) வழங்கும் `சராசரி(*எண்கள்)` என்பதை வரையறுக்கவும். அதை 10, 20, 30 உடன் அழைத்து, முடிவை `m` க்கு ஒதுக்கவும். `m` என்பதை மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தொகை(எண்கள்) / லென்(எண்கள்)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#python.m5.l3.e2
முயற்சிகள்: 0ஏற்றுகிறது…

`def point(x, y, z): return x + y + z` மற்றும் டிக்ட் `coords = {'x': 1, 'y': 2, 'z': 3}`, கால் பாயிண்ட் அன்பேக்கிங் coords மற்றும் முடிவை `s` க்கு ஒதுக்குங்கள். `கள்` மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

புள்ளி (**கோடுகள்)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

கூடுதல் சவால்

உடற்பயிற்சி#python.m5.l3.e3
முயற்சிகள்: 0ஏற்றுகிறது…

Write a function `multiply_all(*args)` that returns the product of all numbers passed as arguments. If no arguments are passed, it should return `1`. Finally, evaluate the call `multiply_all(2, 3, 4)`.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

args இல் உள்ள தனிமங்களின் மீது திரும்பவும் அவற்றின் தயாரிப்பைக் குவிக்கவும் ஒரு for loop ஐப் பயன்படுத்தவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்