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