Les fonctions Python reçoivent également un type de paramètre appelé paramètre variable, ce qui signifie un nombre quelconque de paramètres. Les paramètres variables sont généralement représentés par * args.
def func(*args):
print('args length = {}, args = {}'.format(len(args), args))
func('a') # ==> args length = 1, args = ('a',)
func('a', 'b') # ==> args length = 2, args = ('a', 'b')
func('a', 'b', 'c') # ==> args length = 3, args = ('a', 'b', 'c')
Notez qu'en cours d'utilisation, Python définira un paramètre variable comme un tuple, donc dans la fonction, le paramètre variable peut être utilisé comme un tuple, par exemple, l'élément correspondant peut être récupéré par l'indice de position.
La longueur d'un paramètre variable peut être 0. Lorsque la longueur est 0, une erreur de division par 0 se produit. Il faut donc ajouter une logique de protection
Il existe certaines limitations dans l'utilisation des tuples. Par exemple, parfois, si vous voulez trouver les paramètres à une position spécifique, vous ne pouvez les trouver que par des indices. Si l'ordre change, les indices deviendront invalides et la logique de la fonction aura à modifier et à mettre en œuvre.
Python traite les paramètres de mots-clés variables comme un dict; pour les paramètres de mots-clés variables, il est généralement représenté par ** kwargs.
Par exemple, si vous souhaitez imprimer les informations d'un camarade de classe, vous pouvez le faire comme ceci:
def info(**kwargs):
print('name: {}, gender: {}, age: {}'.format(kwargs.get('name'), kwargs.get('gender'), kwargs.get('age')))
info(name = 'Alice', gender = 'girl', age = 16)
Une fonction qui accepte trois listes de noms de paramètres de mots clés, le sexe et l'âge, qui contiennent le nom, le sexe et l'âge des camarades de classe. Veuillez imprimer le nom, le sexe et l'âge de chaque camarade de classe.
def info(**kwargs):
names = kwargs['names']
gender_list = kwargs['gender']
age_list = kwargs['age']
index = 0
for name in names:
gender = gender_list[index]
age = age_list[index]
print('name: {}, gender: {}, age: {}'.format(name, gender, age))
index += 1
info(names = ['Alice', 'Bob', 'Candy'], gender = ['girl', 'boy', 'girl'], age = [16, 17, 15])