1
0
Fork 0

Revue (en retard) de howto/functional (#904)

* Revue (en retard) de howto/functional

* Prise en compte des remarques de JulienPalard.
This commit is contained in:
Christophe Nanteuil 2019-11-01 21:35:28 +01:00 committed by GitHub
parent 3f9de4e8ab
commit 7a2ab2d44e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 126 additions and 123 deletions

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-21 09:48+0100\n"
"PO-Revision-Date: 2019-10-11 15:16+0200\n"
"PO-Revision-Date: 2019-10-30 00:11+0100\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: \n"
"X-Generator: Poedit 2.2.1\n"
"X-Generator: Poedit 2.2.3\n"
#: ../Doc/howto/functional.rst:3
msgid "Functional Programming HOWTO"
@ -145,7 +145,7 @@ msgstr ""
"de privilégier une approche par rapport à une autre. Cela complexifie "
"l'écriture de programmes appliquant un paradigme différent de celui "
"considéré. Certains langages sont multi-paradigmes et gère plusieurs "
"approches différentes. Lisp, C++ et Python sont de tels langage ; vous "
"approches différentes. Lisp, C++ et Python sont de tels langages ; vous "
"pouvez écrire des programmes ou des bibliothèques dans un style procédural, "
"orienté objet ou fonctionnel dans chacun d'entre eux. Différentes parties "
"d'une application peuvent être écrites selon des approches différentes ; par "
@ -408,10 +408,10 @@ msgstr ""
"En travaillant sur un programme dans le style fonctionnel, vous écrivez un "
"certain nombre de fonctions avec des entrées et des sorties variables. "
"Certaines de ces fonctions sont inévitablement spécifiques à une application "
"en particulier, mais d'autres peuvent être s'appliquer à de nombreux cas "
"d'usage. Par exemple, une fonction qui liste l'ensemble des fichiers XML "
"d'un répertoire à partir du chemin de celui-ci ou une fonction qui renvoie "
"le contenu d'un fichier à partir de son nom peuvent être utiles dans de "
"en particulier, mais d'autres peuvent s'appliquer à de nombreux cas d'usage. "
"Par exemple, une fonction qui liste l'ensemble des fichiers XML d'un "
"répertoire à partir du chemin de celui-ci ou une fonction qui renvoie le "
"contenu d'un fichier à partir de son nom peuvent être utiles dans de "
"nombreuses situations."
#: ../Doc/howto/functional.rst:171
@ -485,7 +485,7 @@ msgstr ""
"Python s'attend à travailler sur des objets itérables dans divers contextes "
"et tout particulièrement dans une boucle :keyword:`for`. Dans l'expression "
"``for X in Y``, Y doit être un itérateur ou un objet pour lequel :func:"
"`iter` peut générer un itérateur. Ces deux expressions sont équivalentes ::"
"`iter` peut générer un itérateur. Ces deux expressions sont équivalentes ::"
#: ../Doc/howto/functional.rst:229
msgid ""
@ -515,13 +515,13 @@ msgid ""
"stream, the ``\"in\"`` and ``\"not in\"`` operators won't return either."
msgstr ""
"Certaines fonctions natives telles que :func:`max` et :func:`min` prennent "
"un itérateur en argument et en renvoie le plus grand ou le plus élément. Les "
"opérateurs ``\"in\"`` et ``\"not in\"`` gèrent également les itérateurs : "
"``X in iterator`` est vrai si X a été trouvé dans le flux renvoyé par "
"l'itérateur. Vous rencontrerez bien sûr des problèmes si l'itérateur est "
"infini : :func:`max`, :func:`min` ne termineront jamais et, si l'élément X "
"n'apparaît pas dans le flux, les opérateurs ``\"in\"`` et ``\"not in\"`` non "
"plus."
"un itérateur en argument et en renvoie le plus grand ou le plus petit "
"élément. Les opérateurs ``\"in\"`` et ``\"not in\"`` gèrent également les "
"itérateurs : ``X in iterator`` est vrai si X a été trouvé dans le flux "
"renvoyé par l'itérateur. Vous rencontrerez bien sûr des problèmes si "
"l'itérateur est infini : :func:`max`, :func:`min` ne termineront jamais et, "
"si l'élément X n'apparaît pas dans le flux, les opérateurs ``\"in\"`` et ``"
"\"not in\"`` non plus."
#: ../Doc/howto/functional.rst:255
msgid ""
@ -562,7 +562,7 @@ msgid ""
"the dictionary's keys::"
msgstr ""
"Appeler :func:`iter` sur un dictionnaire renvoie un itérateur qui parcourt "
"l'ensemble de ses clés ::"
"l'ensemble de ses clés ::"
#: ../Doc/howto/functional.rst:291
msgid ""
@ -605,7 +605,7 @@ msgstr ""
"Les fichiers gèrent aussi l'itération en appelant la méthode :meth:`~io."
"TextIOBase.readline` jusqu'à ce qu'il n'y ait plus d'autre ligne dans le "
"fichier. Cela signifie que vous pouvez lire l'intégralité d'un fichier de la "
"façon suivante ::"
"façon suivante ::"
#: ../Doc/howto/functional.rst:316
msgid ""
@ -613,7 +613,7 @@ msgid ""
"set's elements::"
msgstr ""
"Les ensembles peuvent être créés à partir d'un itérable et autorisent "
"l'itération sur les éléments de l'ensemble ::"
"l'itération sur les éléments de l'ensemble ::"
#: ../Doc/howto/functional.rst:326
msgid "Generator expressions and list comprehensions"
@ -641,18 +641,18 @@ msgid ""
"functional programming language Haskell (https://www.haskell.org/). You can "
"strip all the whitespace from a stream of strings with the following code::"
msgstr ""
"Les compréhensions de listes et les expressions génératrices sont une façon "
"concise d'exprimer de telles opérations, inspirées du langage de "
"Les compréhensions de listes et les expressions génératrices sont des façons "
"concises d'exprimer de telles opérations, inspirées du langage de "
"programmation fonctionnel Haskell (https://www.haskell.org/). Vous pouvez "
"retirer tous les caractères blancs d'un flux de chaînes de caractères à "
"l'aide du code suivant ::"
"retirer tous les caractères blancs initiaux et finaux d'un flux de chaînes "
"de caractères à l'aide du code suivant ::"
#: ../Doc/howto/functional.rst:347
msgid ""
"You can select only certain elements by adding an ``\"if\"`` condition::"
msgstr ""
"Vous pouvez ne sélectionner que certains éléments en ajoutant une condition "
"``\"if\"`` ::"
"« ``if`` » ::"
#: ../Doc/howto/functional.rst:352
msgid ""
@ -664,7 +664,7 @@ msgid ""
"infinite stream or a very large amount of data. Generator expressions are "
"preferable in these situations."
msgstr ""
"La compréhension de liste retourne une liste Python ; ``stripped_list`` est "
"La compréhension de liste renvoie une liste Python ; ``stripped_list`` est "
"une liste contenant les lignes après transformation, pas un itérateur. Les "
"expressions génératrices renvoient un itérateur qui calcule les valeurs au "
"fur et à mesure sans toutes les matérialiser d'un seul coup. Cela signifie "
@ -678,17 +678,17 @@ msgid ""
"comprehensions are surrounded by square brackets (\"[]\"). Generator "
"expressions have the form::"
msgstr ""
"Les expressions génératrices sont écrites entre parenthèses (\"()\") et les "
"compréhensions de listes entre crochets (\"[]\"). Les expressions "
"génératrices sont de la forme ::"
"Les expressions génératrices sont écrites entre parenthèses (« () ») et les "
"compréhensions de listes entre crochets (« [] »). Les expressions "
"génératrices sont de la forme ::"
#: ../Doc/howto/functional.rst:372
msgid ""
"Again, for a list comprehension only the outside brackets are different "
"(square brackets instead of parentheses)."
msgstr ""
"La compréhension de liste équivalente s'écrit de la même à l'exception de "
"l'utilisation des crochets à la place des parenthèses."
"La compréhension de liste équivalente s'écrit de la même manière, utilisez "
"juste des crochets à la place des parenthèses."
#: ../Doc/howto/functional.rst:375
msgid ""
@ -698,7 +698,7 @@ msgid ""
"is true."
msgstr ""
"Les éléments de la sortie sont les valeurs successives de ``expression``. La "
"clause ``if`` est facultative ; si elle est présente, ``expression`` ne sera "
"clause ``if`` est facultative ; si elle est présente, ``expression`` n'est "
"évaluée et ajoutée au résultat que si ``condition`` est vérifiée."
#: ../Doc/howto/functional.rst:379
@ -710,7 +710,7 @@ msgstr ""
"Les expressions génératrices doivent toujours être écrites entre "
"parenthèses, mais les parenthèses qui encadrent un appel de fonction "
"comptent aussi. Si vous souhaitez créer un itérateur qui soit immédiatement "
"passé à une fonction, vous pouvez écrire ::"
"passé à une fonction, vous pouvez écrire ::"
#: ../Doc/howto/functional.rst:385
msgid ""
@ -733,8 +733,8 @@ msgid ""
"To put it another way, a list comprehension or generator expression is "
"equivalent to the following Python code::"
msgstr ""
"Autrement dit, la compréhension de liste ou une expression génératrice est "
"équivalente au code Python ci-dessous ::"
"Autrement dit, une compréhension de liste ou une expression génératrice est "
"équivalente au code Python ci-dessous ::"
#: ../Doc/howto/functional.rst:408
msgid ""
@ -754,10 +754,10 @@ msgid ""
"is creating a tuple, it must be surrounded with parentheses. The first list "
"comprehension below is a syntax error, while the second one is correct::"
msgstr ""
"Afin d'éviter créer une ambiguïté dans la grammaire de Python, "
"Afin de ne pas créer une ambiguïté dans la grammaire de Python, "
"``expression`` doit être encadrée par des parenthèses si elle produit un n-"
"uplet. La première compréhension de liste ci-dessous n'est pas valide "
"syntaxiquement, tandis que la seconde l'est ::"
"syntaxiquement, tandis que la seconde l'est ::"
#: ../Doc/howto/functional.rst:431
msgid "Generators"
@ -787,16 +787,17 @@ msgid ""
"thought of as resumable functions."
msgstr ""
"Vous connaissez sans doute le fonctionnement des appels de fonctions en "
"Python ou en C. Lorsqu'une fonction est appelée, un espace de noms privé lui "
"est associé pour ses variables locales. Lorsque le programme atteint une "
"Python ou en C. Lorsqu'une fonction est appelée, un espace de nommage privé "
"lui est associé pour ses variables locales. Lorsque le programme atteint une "
"instruction ``return``, les variables locales sont détruites et la valeur "
"est renvoyée à l'appelant. Les appels postérieurs à la même fonction créent "
"un nouvel espace de nom privé et de nouvelles variables locales. Cependant, "
"que se passerait-il si les variables locales n'étaient pas détruites lors de "
"la sortie d'une fonction ? Et s'il était possible de reprendre l'exécution "
"de la fonction là où elle s'était arrêtée ? Les générateurs sont une réponse "
"à ces questions ; vous pouvez considérer qu'il s'agit de fonctions qu'il est "
"possible d'interrompre, puis de relancer sans perdre leur progression."
"un nouvel espace de nommage privé et de nouvelles variables locales. "
"Cependant, que se passerait-il si les variables locales n'étaient pas "
"détruites lors de la sortie d'une fonction ? Et s'il était possible de "
"reprendre l'exécution de la fonction là où elle s'était arrêtée ? Les "
"générateurs sont une réponse à ces questions ; vous pouvez considérer qu'il "
"s'agit de fonctions qu'il est possible d'interrompre, puis de relancer sans "
"perdre leur progression."
#: ../Doc/howto/functional.rst:446
msgid "Here's the simplest example of a generator function:"
@ -809,7 +810,7 @@ msgid ""
"function specially as a result."
msgstr ""
"N'importe quelle fonction contenant le mot-clé :keyword:`yield` est un "
"générateur ; le compilateur :term:`bytecode` de Python détecte ce mot-clé "
"générateur ; le compilateur :term:`bytecode` de Python détecte ce mot-clé et "
"prend en compte cette particularité de la fonction."
#: ../Doc/howto/functional.rst:456
@ -830,7 +831,7 @@ msgstr ""
"différence principale entre ``yield`` et ``return`` est qu'en atteignant "
"l'instruction ``yield``, l'état du générateur est suspendu et les variables "
"locales sont conservées. Lors de l'appel suivant à la méthode :meth:"
"`~generator.__next__` du générateur, la fonction reprendra son exécution."
"`~generator.__next__` du générateur, la fonction reprend son exécution."
#: ../Doc/howto/functional.rst:465
msgid "Here's a sample usage of the ``generate_ints()`` generator:"
@ -851,11 +852,11 @@ msgid ""
"method. Once this happens, or the bottom of the function is reached, the "
"procession of values ends and the generator cannot yield any further values."
msgstr ""
"Dans une fonction génératrice, l'instruction ``return value`` lève une "
"exception ``StopIteration(value)`` dans la méthode :meth:`~generator."
"__next__`. Lorsque cela se produit (ou que la fin de la fonction est "
"atteinte), le flot de nouvelles valeurs s'arrête et le générateur ne peut "
"plus rien produire."
"Dans une fonction génératrice, une instruction ``return value`` entraine la "
"levée d'une exception ``StopIteration(value)`` dans la méthode :meth:"
"`~generator.__next__`. Lorsque cela se produit (ou que la fin de la fonction "
"est atteinte), le flot de nouvelles valeurs s'arrête et le générateur ne "
"peut plus rien produire."
#: ../Doc/howto/functional.rst:490
msgid ""
@ -917,10 +918,9 @@ msgstr ""
"Avant Python 2.5, les générateurs ne pouvaient que produire des sorties. Une "
"fois le code du générateur exécuté pour créer un itérateur, il était "
"impossible d'introduire de l'information nouvelle dans la fonction mise en "
"pause. Une astuce consistait à reproduire cette fonctionnalité en autorisant "
"le générateur à consulter des variables globales ou en lui passant des "
"objets mutables modifiés hors du générateur, mais ces approches étaient "
"compliquées."
"pause. Une astuce consistait à obtenir cette fonctionnalité en autorisant le "
"générateur à consulter des variables globales ou en lui passant des objets "
"mutables modifiés hors du générateur, mais ces approches étaient compliquées."
#: ../Doc/howto/functional.rst:531
msgid ""
@ -931,7 +931,7 @@ msgstr ""
"À partir de Python 2.5, il existe une méthode simple pour transmettre des "
"valeurs à un générateur. Le mot-clé :keyword:`yield` est devenu une "
"expression qui renvoie une valeur sur laquelle il est possible d'opérer et "
"que vous pouvez assigner à une variable ::"
"que vous pouvez assigner à une variable ::"
#: ../Doc/howto/functional.rst:537
msgid ""
@ -940,11 +940,12 @@ msgid ""
"above example. The parentheses aren't always necessary, but it's easier to "
"always add them instead of having to remember when they're needed."
msgstr ""
"Comme dans l'exemple ci-dessus, je vous recommande de **toujours** encadrer "
"les expressions ``yield`` par des parenthèses lorsque vous utilisez leur "
"valeur de retour. Elles ne sont pas toujours indispensables mais mieux vaut "
"prévenir que guérir : il est plus facile de les ajouter systématiquement que "
"de prendre le risque de les oublier là où elles sont requises."
"Comme dans l'exemple ci-dessus, nous vous recommandons de **toujours** "
"encadrer les expressions ``yield`` par des parenthèses lorsque vous utilisez "
"leur valeur de retour. Elles ne sont pas toujours indispensables mais mieux "
"vaut prévenir que guérir : il est plus facile de les ajouter "
"systématiquement que de prendre le risque de les oublier là où elles sont "
"requises."
#: ../Doc/howto/functional.rst:542
msgid ""
@ -954,7 +955,7 @@ msgid ""
"write ``val = yield i`` but have to use parentheses when there's an "
"operation, as in ``val = (yield i) + 12``.)"
msgstr ""
"(les règles exactes de parenthésage sont spécifies dans la :pep:`342` : une "
"(Les règles exactes de parenthésage sont spécifies dans la :pep:`342` : une "
"expression ``yield`` doit toujours être parenthésée sauf s'il s'agit de "
"l'expression la plus externe du côté droit d'une assignation. Cela signifie "
"que vous pouvez écrire ``val = yield i`` mais que les parenthèses sont "
@ -1030,8 +1031,8 @@ msgstr ""
"cette exception doit lever à son tour :exc:`GeneratorExit` ou :exc:"
"`StopIteration`. Il est illégal d'attraper cette exception et de faire quoi "
"que ce soit d'autre, ceci déclenche une erreur :exc:`RuntimeError`. Lorsque "
"le ramasse-miette de Python collectera le générateur, il appellera sa "
"méthode :meth:`~generator.close`."
"le ramasse-miette de Python collecte le générateur, il appelle sa méthode :"
"meth:`~generator.close`."
#: ../Doc/howto/functional.rst:605
msgid ""
@ -1040,7 +1041,7 @@ msgid ""
"`GeneratorExit`."
msgstr ""
"Si vous devez exécuter du code pour faire le ménage lors d'une :exc:"
"`GeneratorExit`, je vous suggère d'utiliser une structure ``try: ... "
"`GeneratorExit`, nous vous suggérons d'utiliser une structure ``try: ... "
"finally`` plutôt que d'attraper :exc:`GeneratorExit`."
#: ../Doc/howto/functional.rst:608
@ -1131,16 +1132,16 @@ msgid ""
msgstr ""
":func:`enumerate(iter, start=0) <enumerate>` énumère les éléments de "
"l'itérable en renvoyant des paires contenant le nombre d'éléments déjà "
"listés (depuis le *début*) et l'élément en cours. ::"
"listés (depuis le *début*) et l'élément en cours ::"
#: ../Doc/howto/functional.rst:667
msgid ""
":func:`enumerate` is often used when looping through a list and recording "
"the indexes at which certain conditions are met::"
msgstr ""
":func:`enumerate` est souvent utilisé lorsque l'on souhaite boucler sur une "
"liste tout en listant les indices auxquels une certaine condition est "
"vérifiée ::"
":func:`enumerate` est souvent utilisée lorsque l'on souhaite boucler sur une "
"liste tout en listant les indices pour lesquels une certaine condition est "
"vérifiée ::"
#: ../Doc/howto/functional.rst:675
msgid ""
@ -1158,7 +1159,7 @@ msgstr ""
msgid ""
"(For a more detailed discussion of sorting, see the :ref:`sortinghowto`.)"
msgstr ""
"(pour plus de détails sur les algorithmes de tri, se référer à :ref:"
"(Pour plus de détails sur les algorithmes de tri, se référer à :ref:"
"`sortinghowto`.)"
#: ../Doc/howto/functional.rst:693
@ -1180,7 +1181,7 @@ msgid ""
"and returns them in a tuple::"
msgstr ""
":func:`zip(iterA, iterB, ...) <zip>` rassemble un élément de chaque itérable "
"dans un n-uplet ::"
"dans un n-uplet ::"
#: ../Doc/howto/functional.rst:718
msgid ""
@ -1190,9 +1191,9 @@ msgid ""
"evaluation <https://en.wikipedia.org/wiki/Lazy_evaluation>`__.)"
msgstr ""
"Cela ne construit pas de liste stockée en mémoire, ni ne vide les itérateurs "
"d'entrée avant de renvoyer sa valeur ; en réalité les tuples sont construits "
"et renvoyés au fur et à mesure (il s'agit techniquement parlant d'un "
"comportement d'`évaluation paresseuse <https://fr.wikipedia.org/wiki/"
"d'entrée avant de renvoyer sa valeur ; en réalité les n-uplets sont "
"construits et renvoyés au fur et à mesure (il s'agit techniquement parlant "
"d'un comportement d'`évaluation paresseuse <https://fr.wikipedia.org/wiki/"
"%C3%89valuation_paresseuse>`__)."
#: ../Doc/howto/functional.rst:723
@ -1202,8 +1203,8 @@ msgid ""
"will be the same length as the shortest iterable. ::"
msgstr ""
"Cet itérateur suppose qu'il opère sur des itérables de même longueur. Si la "
"longueur des itérables diffère, le flux résultant aura la même longueur que "
"le plus court des itérables. ::"
"longueur des itérables diffère, le flux résultant a la même longueur que le "
"plus court des itérables. ::"
#: ../Doc/howto/functional.rst:730
msgid ""
@ -1269,7 +1270,7 @@ msgid ""
msgstr ""
":func:`itertools.count(start, step) <itertools.count>` renvoie un flux "
"infini de valeurs régulièrement espacées. Vous pouvez spécifier la valeur de "
"départ (par défaut, 0) et l'intervalle entre les nombres (par défaut, 1) ::"
"départ (par défaut, 0) et l'intervalle entre les nombres (par défaut, 1) ::"
#: ../Doc/howto/functional.rst:763
msgid ""
@ -1317,10 +1318,10 @@ msgstr ""
":func:`itertools.islice(iter, [start], stop, [step]) <itertools.islice>` "
"renvoie une portion de l'itérateur. En passant seulement l'argument *stop*, "
"il renvoie les *stop* premiers éléments. En spécifiant un indice de début, "
"vous récupérez *stop - start* éléments et, en spécifiant une valeur pour "
"*step*, tous les éléments multiples du pas seront sautés. Cependant vous ne "
"pouvez pas utiliser de valeurs négatives pour *start*, *stop* ou *step* "
"(contrairement aux listes et chaînes de caractères de Python). ::"
"vous récupérez *stop - start* éléments ; utilisez *step* pour spécifier une "
"valeur de pas. Cependant vous ne pouvez pas utiliser de valeurs négatives "
"pour *start*, *stop* ou *step* (contrairement aux listes et chaînes de "
"caractères de Python). ::"
#: ../Doc/howto/functional.rst:800
msgid ""
@ -1363,8 +1364,8 @@ msgid ""
"as the arguments::"
msgstr ""
":func:`itertools.starmap(func, iter) <itertools.starmap>` suppose que "
"l'itérable renvoie une séquence de tuples et appelle *func* en utilisant "
"chaque n-uplet comme arguments ::"
"l'itérable renvoie une séquence de n-uplets et appelle *func* en utilisant "
"tous les n-uplets comme arguments ::"
#: ../Doc/howto/functional.rst:839
msgid "Selecting elements"
@ -1375,9 +1376,8 @@ msgid ""
"Another group of functions chooses a subset of an iterator's elements based "
"on a predicate."
msgstr ""
"Une autre catégorie de fonctions sont les fonctions permettant de "
"sélectionner un sous-ensemble des éléments de l'itérateur selon un prédicat "
"donné."
"Une autre catégorie de fonctions est celle permettant de sélectionner un "
"sous-ensemble des éléments de l'itérateur selon un prédicat donné."
#: ../Doc/howto/functional.rst:844
msgid ""
@ -1387,7 +1387,7 @@ msgid ""
msgstr ""
":func:`itertools.filterfalse(predicate, iter) <itertools.filterfalse>` est "
"l'opposé de :func:`filter` et renvoie tous les éléments pour lesquels le "
"prédicat est faux ::"
"prédicat est faux ::"
#: ../Doc/howto/functional.rst:851
msgid ""
@ -1418,8 +1418,8 @@ msgid ""
msgstr ""
":func:`itertools.compress(data, selectors) <itertools.compress>` prend un "
"itérateur *data* et un itérateur *selectors* et renvoie les éléments de "
"*data* pour lesquels l'élément correspondant de *selectors* évalue à vrai. "
"L'itération s'arrête lorsque l'un des deux itérateurs est épuisé ::"
"*data* pour lesquels l'élément correspondant de *selectors* est évalué à "
"vrai. L'itération s'arrête lorsque l'un des deux itérateurs est épuisé ::"
#: ../Doc/howto/functional.rst:883
msgid "Combinatoric functions"
@ -1448,7 +1448,7 @@ msgstr ""
"se trouve toujours avant 2, 3, 4 ou 5. La fonction :func:`itertools."
"permutations(iterable, r=None) <itertools.permutations>` supprime la "
"contrainte sur l'ordre et renvoie tous les arrangements possibles de "
"longueur *r* ::"
"longueur *r* ::"
#: ../Doc/howto/functional.rst:919
msgid ""
@ -1466,7 +1466,7 @@ msgid ""
msgstr ""
"Notez que ces fonctions génèrent toutes les combinaisons possibles en se "
"basant sur la position des éléments et ne requièrent pas que les éléments de "
"*iterable* soient uniques ::"
"*iterable* soient uniques ::"
#: ../Doc/howto/functional.rst:929
msgid ""
@ -1505,8 +1505,9 @@ msgstr ""
"La dernière fonction que allons voir, :func:`itertools.groupby(iter, "
"key_func=None) <itertools.groupby>` est la plus complexe. ``key_func(elem)`` "
"est une fonction qui produit une clé pour chaque élément renvoyé par "
"l'itérable. Si vous ne spécifiez pas de fonction *key*, alors celle-ci sera "
"l'identité par défaut (c'est-à-dire que la clé d'un élément sera lui-même)."
"l'itérable. Si vous ne spécifiez pas de fonction *key*, alors celle-ci est "
"l'identité par défaut (c'est-à-dire que la clé d'un élément est l'élément "
"lui-même)."
#: ../Doc/howto/functional.rst:954
msgid ""
@ -1515,8 +1516,8 @@ msgid ""
"tuples containing a key value and an iterator for the elements with that key."
msgstr ""
":func:`~itertools.groupby` rassemble tous éléments consécutifs de l'itérable "
"sous-jacent qui ont la même clé et renvoie un flux de pairs contenant la clé "
"et un itérateur produisant la liste des éléments pour cette clé."
"sous-jacent qui ont la même clé et renvoie un flux de paires contenant la "
"clé et un itérateur produisant la liste des éléments pour cette clé."
#: ../Doc/howto/functional.rst:982
msgid ""
@ -1527,9 +1528,11 @@ msgid ""
msgstr ""
":func:`~itertools.groupby` fait l'hypothèse que le contenu de l'itérable "
"sous-jacent est d'ores et déjà ordonné en fonction de la clé. Notez que les "
"itérateurs générés utilisent également l'itérable sous-jacent. Vous devrez "
"itérateurs générés utilisent également l'itérable sous-jacent. Vous devez "
"donc consommer l'intégralité des résultats du premier itérateur renvoyé "
"avant de récupérer le deuxième itérateur et la clé correspondante."
"(*iterator-1* dans l'exemple ci-dessus) avant de récupérer le deuxième "
"itérateur (*iterator-2* dans l'exemple ci-dessus) et la clé à laquelle il "
"est associé."
#: ../Doc/howto/functional.rst:989
msgid "The functools module"
@ -1557,12 +1560,11 @@ msgid ""
"\"partial function application\"."
msgstr ""
"En programmant dans un style fonctionnel, il est courant de vouloir "
"construire des variantes de fonctions existantes dont certaines des "
"paramètres sont préremplis. Par exemple, considérons une fonction Python "
"``f(a, b, c)``. Il peut arriver de vouloir une nouvelle fonction ``g(b, c)`` "
"équivalente à ``f(1, b, c)``, c'est-à-dire fixer le premier paramètre de "
"``f()``. La fonction ``g()`` est une appelée « application partielle » de "
"``f()``."
"construire des variantes de fonctions existantes dont certains paramètres "
"sont prédéfinis. Par exemple, considérons une fonction Python ``f(a, b, "
"c)``. Si vous voulez une nouvelle fonction ``g(b, c)`` équivalente à ``f(1, "
"b, c)``, c'est-à-dire fixer le premier paramètre de ``f()``. La fonction "
"``g()`` est une appelée « application partielle » de ``f()``."
#: ../Doc/howto/functional.rst:1002
msgid ""
@ -1623,7 +1625,7 @@ msgid ""
msgstr ""
"Cependant, il peut être plus lisible dans de nombreuses situations "
"impliquant :func:`functools.reduce` de simplement écrire la boucle :keyword:"
"`for` ::"
"`for` ::"
#: ../Doc/howto/functional.rst:1067
msgid ""
@ -1636,7 +1638,7 @@ msgstr ""
"accumulate>` est une fonction similaire qui réalise le même calcul mais, "
"plutôt que de renvoyer seulement le résultat final, :func:`accumulate` "
"renvoie un itérateur qui génère la séquence de tous les résultats "
"intermédiaires ::"
"intermédiaires ::"
#: ../Doc/howto/functional.rst:1080
msgid "The operator module"
@ -1663,27 +1665,27 @@ msgid ""
"Math operations: ``add()``, ``sub()``, ``mul()``, ``floordiv()``, "
"``abs()``, ..."
msgstr ""
"Les opérations mathématiques : ``add()``, ``sub()``, ``mul()``, "
"Les opérations mathématiques : ``add()``, ``sub()``, ``mul()``, "
"``floordiv()``, ``abs()``, ..."
#: ../Doc/howto/functional.rst:1090
msgid "Logical operations: ``not_()``, ``truth()``."
msgstr "Les opérations logiques : ``not_()``, ``truth()``."
msgstr "Les opérations logiques : ``not_()``, ``truth()``."
#: ../Doc/howto/functional.rst:1091
msgid "Bitwise operations: ``and_()``, ``or_()``, ``invert()``."
msgstr "Les opérations bit à bit : ``and_()``, ``or_()``, ``invert()``."
msgstr "Les opérations bit à bit : ``and_()``, ``or_()``, ``invert()``."
#: ../Doc/howto/functional.rst:1092
msgid ""
"Comparisons: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, and ``ge()``."
msgstr ""
"Les comparaisons : ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, et "
"Les comparaisons : ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, et "
"``ge()``."
#: ../Doc/howto/functional.rst:1093
msgid "Object identity: ``is_()``, ``is_not()``."
msgstr "L'identification des objets : ``is_()``, ``is_not()``."
msgstr "L'identification des objets : ``is_()``, ``is_not()``."
#: ../Doc/howto/functional.rst:1095
msgid "Consult the operator module's documentation for a complete list."
@ -1710,7 +1712,7 @@ msgid ""
"need to define a new function at all::"
msgstr ""
"S'il existe une fonction native Python ou une fonction d'un module qui "
"convient, vous n'avez pas besoin de définir de nouvelle fonction ::"
"convient, vous n'avez pas besoin de définir de nouvelle fonction ::"
#: ../Doc/howto/functional.rst:1110
msgid ""
@ -1724,7 +1726,7 @@ msgstr ""
"façon d'écrire des fonctions courtes consiste à utiliser les expressions :"
"keyword:`lambda`. ``lambda`` prend plusieurs paramètres et une expression "
"combinant ces derniers afin de créer une fonction anonyme qui renvoie la "
"valeur de cette expression ::"
"valeur de cette expression ::"
#: ../Doc/howto/functional.rst:1119
msgid ""
@ -1732,15 +1734,15 @@ msgid ""
"the usual way::"
msgstr ""
"Une autre façon de faire est de simplement utiliser l'instruction ``def`` "
"afin de définir une fonction de la manière habituelle ::"
"afin de définir une fonction de la manière habituelle ::"
#: ../Doc/howto/functional.rst:1128
msgid ""
"Which alternative is preferable? That's a style question; my usual course "
"is to avoid using ``lambda``."
msgstr ""
"La méthode à préférer est une question de style, en général je préfère "
"éviter l'utilisation de ``lambda``."
"La méthode à préférer est une question de style, en général l'auteur évite "
"l'utilisation de ``lambda``."
#: ../Doc/howto/functional.rst:1131
msgid ""
@ -1751,13 +1753,13 @@ msgid ""
"``lambda`` statement, you'll end up with an overly complicated expression "
"that's hard to read. Quick, what's the following code doing? ::"
msgstr ""
"Une des raisons pour cela est que ``lambda`` ne peut pas définir toutes les "
"fonctions. Le résultat doit pouvoir se calculer en une seule expression, ce "
"qui signifie qu'il est impossible d'avoir des comparaisons ``if ... elif ... "
"Une des raisons est que ``lambda`` ne peut pas définir toutes les fonctions. "
"Le résultat doit pouvoir se calculer en une seule expression, ce qui "
"signifie qu'il est impossible d'avoir des comparaisons ``if ... elif ... "
"else`` à plusieurs branches ou des structures ``try ... except``. Si vous "
"essayez de trop en faire dans une expression ``lambda``, vous finirez avec "
"une expression illisible. Par exemple, pouvez-vous dire du premier coup "
"dœil ce que fait le code ci-dessous ? ::"
"dœil ce que fait le code ci-dessous ? ::"
#: ../Doc/howto/functional.rst:1141
msgid ""
@ -1767,17 +1769,18 @@ msgid ""
msgstr ""
"Vous pouvez sûrement comprendre ce que fait ce code mais cela prend du temps "
"de démêler l'expression pour y voir plus clair. Une clause ``def`` concise "
"améliore la situation ::"
"améliore la situation ::"
#: ../Doc/howto/functional.rst:1151
msgid "But it would be best of all if I had simply used a ``for`` loop::"
msgstr ""
"Toutefois l'idéal serait de simplement se contenter d'une boucle ``for`` ::"
"Toutefois l'idéal aurait été de simplement se contenter d'une boucle "
"``for`` ::"
#: ../Doc/howto/functional.rst:1157
msgid "Or the :func:`sum` built-in and a generator expression::"
msgstr ""
"Ou de la fonction native :func:`sum` et d'une expression génératrice ::"
"ou de la fonction native :func:`sum` et d'une expression génératrice ::"
#: ../Doc/howto/functional.rst:1161
msgid ""
@ -1931,8 +1934,8 @@ msgstr ""
msgid ""
"https://en.wikipedia.org/wiki/Currying: Entry for the concept of currying."
msgstr ""
"https://fr.wikipedia.org/wiki/Curryfication : l'entrée pour de la concept de "
"la curryfication (création d'applications partielles)."
"https://fr.wikipedia.org/wiki/Curryfication : l'entrée pour le concept de "
"curryfication (création d'applications partielles)."
#: ../Doc/howto/functional.rst:1223
msgid "Python-specific"