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 Nonemyfunc(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+boutput = myfunc(1,2)print(output[0])print(output[1])print(output[2])
donne
1 2123
Passer des arguments facultatifs avec *args
def myfunc(a,b, *args):output = a + bfor ar in args:print('Optional argument:', ar)output += arreturn outputmyfunc(1,2,7)
donne
Optional argument: 710
Autre exemple
def myfunc(a,b, *args):output = a + bfor ar in args:print('Optional argument:', ar)output += arreturn outputmyfunc(1,2,7,10,20)
donne
Optional argument: 7Optional argument: 10Optional argument: 2040
Passer une liste
def myfunc(a,b, *args):output = a + bfor ar in args:print('Optional argument:', ar)return outputl = [7,10,20]myfunc(1,2,l)
donne
Optional argument: [7, 10, 20]
Passer un dictionnaire
def myfunc(a,b, *args):output = a + bfor ar in args:print('Optional argument:', ar)return outputd = {'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 Nonemyfunc(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 + bmyfunc(1,2,lang='fr', )
donne
{'lang': 'fr'}found itfr
Variable globale
En python on peut aussi définir des variables globales
global cc = 123def myfunc(a,b):print(c)return a + bmyfunc(1,2)
donne
123
