Python >> Tutoriel Python >  >> Python

Listes d'arguments arbitraires en Python

Une liste d'arguments arbitraires est une fonctionnalité Python pour appeler une fonction avec un nombre arbitraire d'arguments. Il est basé sur l'opérateur astérisque "déballage" * . Pour capturer un nombre arbitraire d'arguments de fonction dans un tuple args , utilisez la syntaxe astérisque *args dans la définition de votre fonction. Par exemple, la fonction def f(*args): ... permet un nombre et un type arbitraires d'arguments tels que f(1) , f(1, 2) , ou même f('Alice', 1, 2, (3, 4)) .

Ce tutoriel de démarrage rapide présente une astuce Python utile :des listes d'arguments arbitraires.

Syntaxe et appels

Syntax: f(*args): ...
Calls: 
 f(1)                                                     – ->      args = (1,)
 f(1, 2)                                              – ->      args = (1, 2)
 f('Alice', 1, 2, (3, 4))         – ->      args = ('Alice', 1, 2, (3, 4))

Exemples d'arguments arbitraires

Exemple :Supposons que vous vouliez créer une fonction qui autorise un nombre arbitraire d'arguments. Un exemple est la reconnaissance de visages dans des images où chaque image se compose d'un ou plusieurs tableaux de pixels.

Solution Idée  :Vous pouvez y parvenir en ajoutant le *pixelArrays précédé d'un astérisque comme argument de la fonction. Cela regroupe un nombre arbitraire d'arguments dans la variable pixelArrays et le stocke sous forme de tuple. Vous pouvez accéder aux valeurs de tuple via l'indexation ou l'itération dans un for boucle.

def recognize_faces(*pixelArrays):
    for arr in pixelArrays:
        for i in range(1, len(arr)):
            if arr[i] == arr[i-1]:
                print('Face Detected')



recognize_faces([1, 0, 1, 1], [0, 0, 0, 0], [1, 0, 0, 1])
'''
Face Detected
Face Detected
Face Detected
Face Detected
Face Detected
'''

Ce code factice parcourt chaque tableau de pixels et vérifie si deux valeurs suivantes sont identiques. Si tel est le cas, il détecte un visage. Bien que cela n'ait évidemment aucun sens, cela montre toujours comment itérer sur chaque argument lorsqu'un nombre arbitraire d'arguments peut être disponible.

Testons vos compétences avec le puzzle de code suivant.

Listes d'arguments arbitraires Python Puzzle

def f(a, *arguments):
    print(a)
    for arg in arguments:
        print(arg)

f("A", "B", "C")

Quel est le résultat de cet extrait de code ?

Remarque :Vous pouvez combiner les deux types d'arguments :arguments formels (par exemple, a dans le puzzle) et une liste d'arguments arbitraires (par exemple *arguments dans l'énigme). Si elle est appelée avec de nombreux arguments, la liste d'arguments arbitraires gérera tous les arguments sauf les arguments formels.


Êtes-vous un codeur maître?
Testez vos compétences maintenant !

Vidéo associée

Humour de programmeur