Original Translation
47
for line in f: ... # do something with line...
for line in f: ... # faire quelque chose avec line...
48
Why does Python use methods for some functionality (e.g. list.index()) but functions for other (e.g. len(list))?
Pourquoi Python utilise des méthodes pour certaines fonctionnalités (ex : list.index()) mais des fonctions pour d'autres (ex : len(list)) ?
49
The major reason is history. Functions were used for those operations that were generic for a group of types and which were intended to work even for objects that didn't have methods at all (e.g. tuples). It is also convenient to have a function that can readily be applied to an amorphous collection of objects when you use the functional features of Python (``map()``, ``apply()`` et al).
La raison principale est historique. Les fonctions étaient utilisées pour ces opérations qui étaient génériques pour un groupe de types et qui étaient censés fonctionner même pour les objets qui n'avaient pas de méthodes du tout (ex : tuples). C'est aussi pratique d'avoir une fonction qui s'apprête bien à une collection amorphe d'objets lorsque vous utiliser les fonctionnalités fonctionnelles de Python (``map()``, ``apply()`` et autres).
50
In fact, implementing ``len()``, ``max()``, ``min()`` as a built-in function is actually less code than implementing them as methods for each type. One can quibble about individual cases but it's a part of Python, and it's too late to make such fundamental changes now. The functions have to remain to avoid massive code breakage.
En fait, implémenter ``len()``, ``max()``, ``min()`` en tant que fonction intégrée produit moins de code que de les implémenter en tant que méthode pour chaque type. Certains peuvent rouspéter pour des cas individuels mais ça fait partie de Python et il est trop tard pour faire des changements si fondamentaux maintenant. Ces fonctions doivent rester pour éviter la casse massive de code.
51
For string operations, Python has moved from external functions (the ``string`` module) to methods. However, ``len()`` is still a function.
52
Why is join() a string method instead of a list or tuple method?
Pourquoi join() est une méthode de chaîne plutôt qu'une de liste ou de tuple ?
53
Strings became much more like other standard types starting in Python 1.6, when methods were added which give the same functionality that has always been available using the functions of the string module. Most of these new methods have been widely accepted, but the one which appears to make some programmers feel uncomfortable is::
Les chaînes sont devenues bien plus comme d'autres types standards à partir de Python 1.6, lorsque les méthodes ont été ajoutées fournissant ainsi les mêmes fonctionnalités que celles qui étaient déjà disponibles en utilisant les fonctions du module string. La plupart de ces nouvelles méthodes ont été largement acceptées, mais celle qui semble rendre certains programmeurs inconfortables est ::
54
", ".join(['1', '2', '4', '8', '16'])
", ".join(['1', '2', '4', '8', '16'])
55
which gives the result::
qui donne le résultat ::
56
"1, 2, 4, 8, 16"
"1, 2, 4, 8, 16"