Monday, January 13, 2025

Using *, **, & / with positional and keyword arguments

def add(a, *b):

  print(a)

  result = 0

  for i in b:

    result += i

  return result


print(add(1, 2, 3, 4, 5))

print()

print(add(10, 20))

print()


def func(**a):

  for k, v in a.items():

    print(k, v)


func(number=5, color="blue", fruit="apple")


def process(method, **kwargs):

  if method == "Credit Card":

    card_number = kwargs.get("card_number")

    exp_date = kwargs.get("exp_date")

    cvv = kwargs.get("cvv")

    print(f"Credit card number {card_number}")

  elif method == "Paypal":

    paypal_id = kwargs.get("paypal_id")

    print(f"PayPal ID {paypal_id}")

  elif method == "Crypto":

    wallet_address = kwargs.get("wallet_address")

    print(f"Crypto wallet {wallet_address}")

  else:

    print("Invalid payment method")


process("Credit Card", card_number="1234 5678 9012 3456", exp_date="12/25", cvv="123")

process("Paypal", paypal_id="user@example.com")

process("Crypto", wallet_address="1A2b3C4D5e6F")


def posArg(a, b, /, c, d): # Everything up to '/' must be pos. arguments

  return a + b + c + d

print(posArg(3, 4, 5, 6))

print(posArg(3, 4, 1, d=2))


def keyArg(a, b, *, c, d): # Everything after '*' must be kwargs

  return a + b + c + d

print(keyArg(3, 4, c=1, d=2))


def pos_keyArg(a, b, /, c, *, d): # Combining '/' and '*'.

  return a + b + c + d            # 'c' can be a positional or kwarg  

print(pos_keyArg(3, 4, 1, d=2))

print(pos_keyArg(3, 4, c=1, d=2))

No comments:

Post a Comment