Comment passer des arguments facultatifs dans une fonction python ?

Published: 29 novembre 2022

Tags: Python; Fonction;

DMCA.com Protection Status

Exemples de comment passer des variables optionnelle dans une fonction en python:

Simple function en python

Commençons par créer un simple fonction en python:

def function_test(a,b):
    print(a,b)
    return None

myfunc(1,2)

donne

1 2

Cependant si on essaye de passer une troisième variable

myfunc(1,2,7)

va engendrer un message d'erreur

too many values to unpack (expected 2)

def myfunc(a,b):
    print('function print', a,b)
    return a, b, a+b

output = myfunc(1,2)

print(output[0])
print(output[1])
print(output[2])

donne

1 2

1
2
3

Passer des arguments facultatifs avec *args

def myfunc(a,b, *args):
    output = a + b
    for ar in args:
        print('Optional argument:', ar)
        output += ar
    return output

myfunc(1,2,7)

donne

Optional argument: 7

10

Autre exemple

def myfunc(a,b, *args):
    output = a + b
    for ar in args:
        print('Optional argument:', ar)
        output += ar
    return output

myfunc(1,2,7,10,20)

donne

Optional argument: 7
Optional argument: 10
Optional argument: 20

40

Passer une liste

def myfunc(a,b, *args):
    output = a + b
    for ar in args:
        print('Optional argument:', ar)
    return output

l = [7,10,20]

myfunc(1,2,l)

donne

Optional argument: [7, 10, 20]

Passer un dictionnaire

def myfunc(a,b, *args):
    output = a + b
    for ar in args:
        print('Optional argument:', ar)
    return output

d = {'bob':42, 'emma':47}

myfunc(1,2,d)

donne

Optional argument: {'bob': 42, 'emma': 47}

Passer des arguments facultatifs avec **kwargs

Autre possibilité st d'utiliser **kwargs pour donner un nom directement aux variables optionnelles:

def myfunc(a,b, **kwargs):
    print('kwargs: ', kwargs)
    return None

myfunc(1,2,lang='fr')

donne

{'lang': 'fr'}

Dans la fonction pour tester si il y a un argument facultatif comme 'lang' on peut utiliser:

if 'lang' in kwargs:

pour obtenir la valeur de la variable 'lang':

kwargs['lang']

Exemple

def myfunc(a,b, **kwargs):
    print(kwargs)
    if 'lang' in kwargs:
        print("found it")
        print( kwargs['lang'] )
    return a + b

myfunc(1,2,lang='fr', )

donne

{'lang': 'fr'}
found it
fr

Variable globale

En python on peut aussi définir des variables globales

global c

c = 123

def myfunc(a,b):
    print(c)
    return a + b

myfunc(1,2)

donne

123

Voir aussi