Je vais vous parler du pluriel des noms (en anglais). Nous
verrons ensuite les fonctions qui retournent d'autres fonctions, les
expressions régulières avancées et les générateurs. Les générateurs
sont une nouveauté de Python 2.3. Mais
commençons par le pluriel des noms.
Si vous n'avez pas lu le Chapitre 7, Expressions régulières, c'est un bon
moment pour le faire. Ce chapitre part du principe que vous comprenez
les bases des expressions régulières et traite de questions plus
avancées.
L'anglais est une langue complexe qui emprunte à de nombreuses
autres langues, ses règles pour le pluriel des noms sont multiples et
complexes. Il y a les règles, les exceptions à ces règles et les
exceptions à ces exceptions.
Si vous avez grandi dans un pays de langue anglaise ou si vous
avez appris l'anglais à l'école, vous connaissez sans doute les règles
de base :
- Si un mot se termine par S, X, ou Z, ajouter ES.
«Bass» donne «basses», «fax»
donne «faxes» et «waltz» donne
«waltzes».
- Si un mot se termine par un H prononcé, ajouter ES, si il se
termine par un H silencieux, ajouter S. Qu'est-ce qu'un H prononcé ?
C'est un H associé à d'autres lettres pour produire un son. Donc
«coach» donne «coaches» et
«rash» donne «rashes», car on prononce les
sons CH et SH. Mais «cheetah» devient
«cheetahs», car le H est silencieux.
- Si un mot se termine par un Y prononcé comme I, remplacer le Y
par IES, si le Y est associé à une voyelle pour donner un autre son,
ajouter S. Donc «vacancy» donne
«vacancies», mais «day» donne
«days».
- Si le mot ne répond à aucune de ces règles, ajouter un S et
prier pour que ce soit juste.
(Je sais qu'il y a beaucoup d'exceptions. «Man» donne
«men» et «woman» donne «women»,
mais «human» donne «humans».
«Mouse» donne «mice» et «louse»
donne «lice», mais «house» donne
«houses». «Knife» donne «knives»
et «wife» donne «wives», mais
«lowlife» donne «lowlifes». Sans parler des
mots qui sont invariables, comme «sheep»,
«deer» et «haiku».)
Les autres langues ont, bien sûr, des règles complètement
différentes.
Nous allons concevoir un module qui met les noms au pluriel. Nous
commencerons par l'anglais, avec ce quatre règles, mais gardez à
l'esprit qu'il faudra inévitablement ajouter d'autres règles et
peut-être d'autres langues.