Comment transmettre un nombre variable d'arguments à une fonction ?

S'entraîner aux questions d'entrevue de programmation en Python

Kirill Smirnov

Data Science Consultant, Altran

Types d'arguments

Il existe deux types d'arguments :

 

S'entraîner aux questions d'entrevue de programmation en Python

Types d'arguments

Il existe deux types d'arguments :

  • positional arguments

 

S'entraîner aux questions d'entrevue de programmation en Python

Types d'arguments

Il existe deux types d'arguments :

  • positional arguments
  • keyword arguments

 

S'entraîner aux questions d'entrevue de programmation en Python

Types d'arguments

Il existe deux types d'arguments :

  • positional arguments
  • keyword arguments

 

S'entraîner aux questions d'entrevue de programmation en Python

Arguments positionnels

def func_with_pos_args(arg1, arg2):

    pass
def multiply(x, y):
    return x * y
multiply(2, 3)
6
S'entraîner aux questions d'entrevue de programmation en Python

*args

def func_with_var_pos_args(*args):

    pass
func_with_var_pos_args(1, 2, 'hello')
S'entraîner aux questions d'entrevue de programmation en Python

*args

def func_with_var_pos_args(*args):

    print(args)
func_with_var_pos_args(1, 2, 'hello')
(1, 2, 'hello')
S'entraîner aux questions d'entrevue de programmation en Python

*args

def func_with_var_pos_args(*args):
    for arg in args:
        print(arg)
func_with_var_pos_args(1, 2, 'hello')
1
2
'hello'
S'entraîner aux questions d'entrevue de programmation en Python

Redéfinir multiply()

def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
multiply(1, 2, 3):
6
multiply(1, 2, 3, 4)
24
S'entraîner aux questions d'entrevue de programmation en Python

Redéfinir multiply()

def multiply(*nums):
    result = 1
    for num in nums:
        result = result * num
    return result
multiply(1, 2, 3):
6
multiply(1, 2, 3, 4)
24
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage de l'astérisque simple *

def multiply(num1, num2, num3):
    return num1 * num2 * num3
multiply(1, 2, 3)
6
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage de l'astérisque simple *

def multiply(num1, num2, num3):
    return num1 * num2 * num3
nums = (2, 3, 4)
multiply(*nums)
24
nums = [2, 3]
multiply(*nums, 4)
24
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage de l'astérisque simple *

def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
nums = (2, 3, 4, 5)
multiply(*nums)
120
S'entraîner aux questions d'entrevue de programmation en Python

Types d'arguments

Il existe deux types d'arguments :

  • positional arguments
  • keyword arguments

 

S'entraîner aux questions d'entrevue de programmation en Python

Arguments nommés

def func_with_kwargs(arg1=1, arg2=2):
def multiply(x=1, y=2):
    print(str(x) + ' : ' + str(y))
multiply(2, 3)
2 : 3
multiply()
1 : 2
S'entraîner aux questions d'entrevue de programmation en Python

Arguments nommés

def func_with_kwargs(arg1=1, arg2=2):
def multiply(x=1, y=2):
    print(str(x) + " : " + str(y))
multiply(y=5, x=3)
3 : 5
S'entraîner aux questions d'entrevue de programmation en Python

**kwargs

kwargs - arguments nommés

def func_with_var_kwargs(**kwargs):
    print(kwargs)
func_with_var_kwargs(arg1=1, arg2=2, arg3=3)
{arg1: 1, arg2: 2, arg3: 3}
func_with_var_kwargs(1, arg2=2, arg3=3)
TypeError
S'entraîner aux questions d'entrevue de programmation en Python

Redéfinir multiply()

def multiply_kwargs(**kwargs):
    result = 1
    for (key, value) in kwargs.items():
        print(key + ' = ' + str(value))
        result = result * value
    return result
def multiply(*args):
    result = 1
    for arg in args:
        result = result * arg
    return result
S'entraîner aux questions d'entrevue de programmation en Python

Appeler multiply_kwargs()

multiply_kwargs(num1=1, num2=2, num3=3, num4=4)
num1 = 1
num2 = 2
num3 = 3
num4 = 4
24
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage du double astérisque **

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
multiply()
num1 = 1
num2 = 2
num3 = 3
6
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage du double astérisque **

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'num1': 10, 'num2': 20, 'num3': 30}
multiply(**nums)
num1 = 10
num2 = 20
num3 = 30
6000
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage du double astérisque **

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'num1': 10, 'num3': 30}
multiply(**nums)
num1 = 10
num2 = 2
num3 = 30
600
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage du double astérisque **

def multiply(num1=1, num2=2, num3=3):
    print('num1 = ' + str(num1))
    print('num2 = ' + str(num2))
    print('num3 = ' + str(num3))
    return num1 * num2 * num3
nums = {'NUM10': 1, 'num2': 2, 'num3': 3}
multiply(**nums)
TypeError
S'entraîner aux questions d'entrevue de programmation en Python

Autre usage du double astérisque **

def multiply_kwargs(**kwargs):
    result = 1
    for (key, value) in kwargs.items():
        print(key + ' = ' + str(value))
        result = result * value
    return result
nums = {
    'num1': 2, 'num2': 3,
    'num3': 4, 'num4': 5
}
multiply_kwargs(**nums)
num1 = 2
num2 = 3
num3 = 4
num4 = 5
120
S'entraîner aux questions d'entrevue de programmation en Python

Ordre des arguments

def func(                                           ):
S'entraîner aux questions d'entrevue de programmation en Python

Ordre des arguments

def func(arg1, arg2,                                ):
  • arg1, arg2 : arguments positionnels
S'entraîner aux questions d'entrevue de programmation en Python

Ordre des arguments

def func(arg1, arg2, *args,                         ):
  • arg1, arg2 : arguments positionnels
  • *args : arguments positionnels de taille variable
S'entraîner aux questions d'entrevue de programmation en Python

Ordre des arguments

def func(arg1, arg2, *args, kwarg1, kwarg2,         ):
  • arg1, arg2 : arguments positionnels
  • *args : arguments positionnels de taille variable
  • kwarg1, kwarg2 : arguments nommés
S'entraîner aux questions d'entrevue de programmation en Python

Ordre des arguments

def func(arg1, arg2, *args, kwarg1, kwarg2, **kwargs):
  • arg1, arg2 : arguments positionnels
  • *args : arguments positionnels de taille variable
  • kwarg1, kwarg2 : arguments nommés
  • **kwargs : arguments nommés de taille variable
def func(arg1, arg2, *args):

def func(arg1, arg2, **kwargs):
def func(*args, **kwargs):
S'entraîner aux questions d'entrevue de programmation en Python

Passons à la pratique !

S'entraîner aux questions d'entrevue de programmation en Python

Preparing Video For Download...