Accéder au contenu principal

Tutoriel sur les fonctions Python

Un tutoriel sur les fonctions en Python qui explique comment écrire des fonctions, comment les appeler, et plus encore !
Actualisé 4 oct. 2024  · 14 min de lecture
développer ses compétences en python avec la bannière datacamp

Les fonctions sont un élément essentiel du langage de programmation Python : vous avez peut-être déjà rencontré et utilisé certaines des nombreuses fonctions fantastiques qui sont intégrées dans le langage Python ou qui sont fournies avec son écosystème de bibliothèques. Cependant, en tant que Data Scientist, vous devrez constamment écrire vos propres fonctions pour résoudre les problèmes que vous posent vos données.

Pour exécuter facilement vous-même tous les exemples de code de ce tutoriel, vous pouvez créer gratuitement un classeur DataLab dans lequel Python est préinstallé et qui contient tous les exemples de code. Pour plus de pratique sur l'écriture de fonctions Python, consultez cet exercice pratique DataCamp ou essayez notre cours Python Data Science Toolbox!

Les fonctions en Python

Les fonctions sont utilisées en programmation pour regrouper un ensemble d'instructions que vous souhaitez utiliser de manière répétée ou qui, en raison de leur complexité, sont mieux contenues dans un sous-programme et appelées en cas de besoin. Cela signifie qu'une fonction est un morceau de code écrit pour effectuer une tâche spécifique. Pour mener à bien cette tâche spécifique, la fonction peut ou non avoir besoin de plusieurs entrées. Lorsque la tâche est exécutée, la fonction peut ou non renvoyer une ou plusieurs valeurs.

Il existe trois types de fonctions en Python :

  • Des fonctions intégrées, telles que help() pour demander de l'aide, min() pour obtenir la valeur minimale, print() pour imprimer un objet sur le terminal,... Vous pouvez trouver une vue d'ensemble de ces fonctions ici.
  • les fonctions définies par l'utilisateur (UDF), qui sont des fonctions créées par les utilisateurs pour les aider ; et
  • Les fonctions anonymes, également appelées fonctions lambda, parce qu'elles ne sont pas déclarées avec le mot-clé standard def.

Fonctions et méthodes

Une méthode est une fonction qui fait partie d'une classe. Vous y accédez avec une instance ou un objet de la classe. Une fonction n'est pas soumise à cette restriction : elle fait simplement référence à une fonction autonome. Cela signifie que toutes les méthodes sont des fonctions, mais que toutes les fonctions ne sont pas des méthodes.

Prenons l'exemple suivant : vous définissez d'abord une fonction plus(), puis une classe Summation avec une méthode sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Si vous voulez maintenant appeler la méthode sum() qui fait partie de la classe Summation, vous devez d'abord définir une instance ou un objet de cette classe. Définissons donc un tel objet :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Rappelez-vous que cette instanciation n'est pas nécessaire pour appeler la fonction plus()! Vous pourrez exécuter plus(1,2) dans le bloc de code de DataCamp Light sans aucun problème !

Paramètres et arguments

Les paramètres sont les noms utilisés lors de la définition d'une fonction ou d'une méthode, et dans lesquels les arguments seront placés. En d'autres termes, les arguments sont les éléments fournis à une fonction ou à un appel de méthode, tandis que le code de la fonction ou de la méthode fait référence aux arguments par leurs noms de paramètres.

Considérez l'exemple suivant et revenez au morceau de DataCamp Light ci-dessus : vous passez deux arguments à la méthode sum() de la classe Summation, bien que vous ayez précédemment défini trois paramètres, à savoir self, a et b.

Qu'est-il arrivé à self?

Le premier argument de chaque méthode de classe est toujours une référence à l'instance courante de la classe, qui dans ce cas est Summation. Par convention, cet argument est appelé self.

Cela signifie que vous ne transmettez pas la référence à self dans ce cas, car self est le nom de paramètre d'un argument implicitement transmis qui fait référence à l'instance par laquelle une méthode est invoquée. Il est inséré implicitement dans la liste des arguments.

Comment définir une fonction : Fonctions définies par l'utilisateur (UDF)

Les quatre étapes de la définition d'une fonction en Python sont les suivantes :

  1. Utilisez le mot-clé def pour déclarer la fonction et faites-le suivre du nom de la fonction.
  2. Ajoutez des paramètres à la fonction : ils doivent se trouver entre les parenthèses de la fonction. Terminez votre ligne par un deux-points.
  3. Ajoutez les instructions que les fonctions doivent exécuter.
  4. Terminez votre fonction par une instruction de retour si la fonction doit produire quelque chose. Sans l'instruction return, votre fonction renverra un objet None.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGvIFdvcmxkXCIpIFxuICByXR1cm4gIn0=.

Bien entendu, vos fonctions deviendront plus complexes au fur et à mesure : vous pouvez y ajouter des boucles "for", des contrôles de flux, ... et bien d'autres choses encore pour les rendre plus fines :

def hello():
  name = str(input("Enter your name: "))
  if name:
    print ("Hello " + str(name))
  else:
    print("Hello World") 
  return 
  
hello()

Dans la fonction ci-dessus, vous demandez à l'utilisateur de donner un nom. Si aucun nom n'est donné, la fonction affichera "Hello World". Dans le cas contraire, l'utilisateur recevra une réponse personnalisée du type "Hello".

N'oubliez pas non plus que vous pouvez définir un ou plusieurs paramètres de fonction pour votre UDF. Vous en apprendrez plus à ce sujet lorsque vous aborderez la section Arguments des fonctions. En outre, vous pouvez ou non renvoyer une ou plusieurs valeurs comme résultat de votre fonction.

Apprenez Python à partir de zéro

Maîtrisez Python pour la science des données et acquérez des compétences recherchées.
Commencez à apprendre gratuitement

Les return Déclaration

Notez qu'étant donné que vous imprimez quelque chose dans votre UDF hello(), vous n'avez pas vraiment besoin de le renvoyer. Il n'y aura pas de différence entre la fonction ci-dessus et celle-ci :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Cependant, si vous souhaitez continuer à travailler avec le résultat de votre fonction et essayer des opérations sur celui-ci, vous devrez utiliser l'instruction return pour renvoyer une valeur, telle qu'une chaîne de caractères, un nombre entier, .... Considérez le scénario suivant, où hello() renvoie une chaîne de caractères "hello", tandis que la fonction hello_noreturn() renvoie None:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

La deuxième fonction vous donne une erreur car vous ne pouvez pas effectuer d'opérations avec un None. Vous obtiendrez un message TypeError indiquant que vous ne pouvez pas effectuer l'opération de multiplication pour NoneType (le None qui est le résultat de hello_noreturn()) et int (2).

Les fonctions Tip sortent immédiatement lorsqu'elles rencontrent une instruction return, même si cela signifie qu'elles ne renvoient aucune valeur :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=.

Une autre chose qui mérite d'être mentionnée lorsque vous travaillez avec l'instruction return est le fait que vous pouvez l'utiliser pour renvoyer plusieurs valeurs. Pour ce faire, vous utilisez des tuples.

Rappelez-vous que cette structure de données est très similaire à celle d'une liste : elle peut contenir plusieurs valeurs. Cependant, les tuples sont immuables, ce qui signifie que vous ne pouvez pas modifier les montants qui y sont stockés ! Vous le construisez à l'aide de doubles parenthèses (). Vous pouvez décomposer les tuples en plusieurs variables à l'aide de la virgule et de l'opérateur d'affectation.

Consultez l'exemple suivant pour comprendre comment votre fonction peut renvoyer plusieurs valeurs :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Notez que l'instruction return return sum, a aurait le même résultat que return (sum, a): la première regroupe en fait sum et a dans un tuple sous le capot !

Comment appeler une fonction

Dans les sections précédentes, vous avez déjà vu de nombreux exemples de la manière dont vous pouvez appeler une fonction. L'appel d'une fonction signifie que vous exécutez la fonction que vous avez définie, soit directement à partir de l'invite Python, soit par l'intermédiaire d'une autre fonction (comme vous le verrez dans la section "Fonctions imbriquées").

Appelez votre fonction nouvellement définie hello() en exécutant simplement hello(), comme dans le morceau DataCamp Light ci-dessous :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29yGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Comment ajouter une documentation à une fonction Python ?

Un autre aspect essentiel de l'écriture de fonctions en Python : les docstrings. Les chaînes de texte décrivent ce que fait votre fonction, par exemple les calculs qu'elle effectue ou ses valeurs de retour. Ces descriptions servent de documentation pour votre fonction, de sorte que toute personne qui lit la docstring de votre fonction comprend ce que fait votre fonction, sans avoir à parcourir tout le code de la définition de la fonction.

La documentation d'une fonction est placée sur la ligne qui suit immédiatement l'en-tête de la fonction et est placée entre trois guillemets. Une chaîne de caractères appropriée pour votre fonction hello() est "Imprime "Hello World"".

def hello():
"""Prints "Hello World".

Returns:
    None
"""
  print("Hello World") 
  return 

Notez que les docstrings peuvent être plus longs que celui qui est donné ici en exemple. Si vous souhaitez étudier les docstrings plus en détail, vous pouvez consulter certains dépôts Github de bibliothèques Python telles que scikit-learn ou pandas, où vous trouverez de nombreux exemples !

Arguments de fonction en Python

Plus tôt, vous avez appris la différence entre les paramètres et les arguments. En bref, les arguments sont les éléments qui sont donnés à une fonction ou à un appel de méthode, tandis que le code de la fonction ou de la méthode se réfère aux arguments par leurs noms de paramètres. Les UDF Python peuvent prendre en charge quatre types d'arguments :

  • Arguments par défaut
  • Arguments requis
  • Arguments par mot-clé
  • Nombre variable d'arguments

Arguments par défaut

Les arguments par défaut sont ceux qui prennent une valeur par défaut si aucune valeur d'argument n'est transmise lors de l'appel de la fonction. Vous pouvez attribuer cette valeur par défaut à l'aide de l'opérateur d'affectation =, comme dans l'exemple suivant :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Arguments requis

Comme son nom l'indique, les arguments requis d'un UDF sont ceux qui doivent y figurer. Ces arguments doivent être transmis lors de l'appel de la fonction et dans le bon ordre, comme dans l'exemple suivant :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZYgcGx1cyhLGIpOlxuICByZXR1cm4gYSArIGIifQ==.

Vous avez besoin d'arguments qui correspondent aux paramètres a et b pour appeler la fonction sans obtenir d'erreurs. Si vous intervertissez a et b, le résultat ne sera pas différent, mais il pourrait l'être si vous remplacez plus() par ce qui suit :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGbwHVzKClgIHdpdGggcmVxdWlyZQgYXJndW1lbnRzXG5kZYgcGx1cyhLGIpOlxuICByZXR1cm4gYS9iIn0=.

Arguments sur les mots-clés

Si vous voulez vous assurer que vous appelez tous les paramètres dans le bon ordre, vous pouvez utiliser le mot-clé arguments dans votre appel de fonction. Vous les utilisez pour identifier les arguments par leur nom de paramètre. Reprenons l'exemple précédent pour être un peu plus clair :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Notez qu'en utilisant le mot-clé arguments, vous pouvez également modifier l'ordre des paramètres et obtenir le même résultat lorsque vous exécutez votre fonction :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ====.

Variable Nombre d'arguments

Dans les cas où vous ne connaissez pas le nombre exact d'arguments que vous voulez passer à une fonction, vous pouvez utiliser la syntaxe suivante avec *args:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

L'astérisque (*) est placé devant le nom de la variable qui contient les valeurs de tous les arguments de la variable qui ne sont pas des mots clés. Notez ici que vous auriez tout aussi bien pu passer *varint, *var_int_args ou tout autre nom à la fonction plus().

Conseil: essayez de remplacer *args par un autre nom comprenant l'astérisque. Vous verrez que le code ci-dessus continue à fonctionner !

Vous voyez que la fonction ci-dessus utilise la fonction intégrée de Python sum() pour additionner tous les arguments transmis à plus(). Si vous souhaitez éviter cela et construire la fonction entièrement vous-même, vous pouvez utiliser cette alternative :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcblxuIyBDYWxjdWxhdGUgdGhlIHN1bSAgXG5wbHVzKDIwLDMwLDQwLDUwKSJ9

Variables globales et locales

En général, les variables définies à l'intérieur du corps d'une fonction ont une portée locale, et celles définies à l'extérieur ont une portée globale. Cela signifie que les variables locales sont définies dans un bloc de fonctions et ne sont accessibles qu'à l'intérieur de cette fonction, tandis que les variables globales peuvent être obtenues par toutes les fonctions présentes dans votre script :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

Vous verrez que vous obtiendrez un message NameError indiquant que name 'total' is not defined lorsque vous essayez d'imprimer la variable locale total qui a été définie dans le corps de la fonction. La variable init, en revanche, peut être imprimée sans problème.

Fonctions anonymes en Python

Les fonctions anonymes sont également appelées fonctions lambda en Python, car au lieu de les déclarer avec le mot-clé standard def, vous utilisez le mot-clé lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

Dans le morceau DataCamp Light ci-dessus, lambda x: x*2 est la fonction anonyme ou lambda. x est l'argument, et x*2 est l'expression ou l'instruction qui est évaluée et renvoyée. La particularité de cette fonction est qu'elle n'a pas de nom, comme les exemples que vous avez vus dans la première partie de ce tutoriel sur les fonctions. Si vous deviez écrire la fonction ci-dessus dans un UDF, le résultat serait le suivant :

def double(x):
  return x*2

Prenons un autre exemple de fonction lambda où vous travaillez avec deux arguments :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Vous utilisez des fonctions anonymes lorsque vous avez besoin d'une fonction sans nom pour une courte période et que celle-ci est créée au moment de l'exécution. Les contextes spécifiques dans lesquels cela peut s'avérer pertinent sont ceux où vous travaillez avec filter(), map() et reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

La fonction filter() filtre, comme son nom l'indique, la liste d'entrée originale my_list sur la base d'un critère >10. Avec map(), en revanche, vous appliquez une fonction à tous les éléments de la liste my_list. Dans ce cas, vous multipliez tous les éléments par 2.

Notez que la fonction reduce() fait partie de la bibliothèque functools. Vous utilisez cette fonction de manière cumulative pour les éléments de la liste my_list, de gauche à droite, et réduisez la séquence à une seule valeur, 55, dans ce cas.

L'utilisation main() en tant que fonction

Si vous avez une certaine expérience d'autres langages de programmation tels que Java, vous savez que la fonction main est nécessaire pour exécuter des fonctions. Comme vous l'avez vu dans les exemples ci-dessus, cela n'est pas nécessairement nécessaire pour Python. Cependant, l'inclusion d'une fonction main() dans votre programme Python peut s'avérer pratique pour structurer votre code de manière logique - tous les composants les plus importants sont contenus dans cette fonction main().

Vous pouvez facilement définir une fonction main() et l'appeler comme vous l'avez fait avec toutes les autres fonctions ci-dessus :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

Cependant, dans l'état actuel des choses, le code de votre fonction main() sera appelé lorsque vous l'importerez en tant que module. Pour éviter que cela ne se produise, vous appelez la fonction main() lorsque __name__ == '__main__'.

Cela signifie que le code du morceau de code ci-dessus devient :

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Notez qu' en plus de la fonction __main__, vous disposez également d'une fonction __init__ qui initialise une instance d'une classe ou d'un objet. En d'autres termes, il s'agit d'un constructeur ou d'un initialisateur qui est automatiquement appelé lorsque vous créez une nouvelle instance d'une classe. Avec cette fonction, l'objet nouvellement créé est assigné au paramètre self, que vous avez vu plus tôt dans ce tutoriel. Regardez l'exemple suivant :

class Dog:
    """    
    Requires:
    legs - Legs so that the dog can walk.
    color - A color of the fur.
    """

    def __init__(self, legs, color):
        self.legs = legs
        self.color = color
        
    def bark(self):
        bark = "bark" * 2
        return bark

if __name__ == "__main__":
    dog = Dog(4, "brown")
    bark = dog.bark()
    print(bark)

Vous voulez aller plus loin dans la pratique ?

Félicitations ! Vous avez terminé ce court tutoriel sur les fonctions en Python. Si vous souhaitez réviser d'autres éléments de base de la programmation en Python, ne manquez pas le cours Data Types for Data Science, qui vous permettra de consolider et de mettre en pratique vos connaissances sur les listes, les dictionnaires, les tuples, les ensembles et les heures de la date.

Obtenez une certification dans le rôle de Data Scientist de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez votre certification
Timeline mobile.png
Sujets

En savoir plus sur Python

cours

Writing Functions in Python

4 hr
90.8K
Learn to use best practices to write maintainable, reusable, complex functions with good documentation.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

Voir plusVoir plus