IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Chapitre 17. Fonctions dynamiques

Chapitre 17. Fonctions dynamiques

17.1. Plonger

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 :

  1. Si un mot se termine par S, X, ou Z, ajouter ES. «Bass» donne «basses», «fax» donne «faxes» et «waltz» donne «waltzes».
  2. 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.
  3. 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».
  4. 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.