Outils pour utilisateurs

Outils du site


issue147:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue147:python [2019/08/07 07:30] d52frissue147:python [2019/08/08 10:21] (Version actuelle) andre_domenech
Ligne 17: Ligne 17:
 I'm going to focus on two of the changes in this article. First, we'll take a look at the Assignment Expression change.** I'm going to focus on two of the changes in this article. First, we'll take a look at the Assignment Expression change.**
  
-Il y a beaucoup de modifications dans le version 3.8.0, dont nous avons déjà vu l'une d'elles en avril (FCM n° 144). Les arguments « positional-only ». Beaucoup ont trait à CPython et et d'autres choses dont certains d'entre vous n'ont pas à se soucier. Voici une liste de quelques autres points nouveaux :+Il y a beaucoup de modifications dans la version 3.8.0 et nous avons déjà vu l'une d'elles en avril (FCM n° 144). Les arguments « positional-only ». Beaucoup ont trait à CPython et d'autres choses dont certains d'entre vous n'auront jamais à se soucier. Voici une liste de quelques autres points nouveaux :
 ••Expressions d'affectation - PEP 572 (voir ci-dessous) ••Expressions d'affectation - PEP 572 (voir ci-dessous)
 ••Protocole 5 de Pickle avec des données « out-of-band » - PEP 574 ••Protocole 5 de Pickle avec des données « out-of-band » - PEP 574
-••Absences d'audit dans le runtime - PEP 578+••Absence d'audit dans le runtime - PEP 578
 ••Support pratique des f-strings = spécifieur pour le débogage (voir ci-dessous) ••Support pratique des f-strings = spécifieur pour le débogage (voir ci-dessous)
-••LOAD GLOBAL est maintenant 40% plus rapide+••LOAD_GLOBAL est maintenant 40 % plus rapide
 ••pickle utilise maintenant le protocole 4 par défaut ••pickle utilise maintenant le protocole 4 par défaut
 ••En lien avec la saisie : ••En lien avec la saisie :
Ligne 29: Ligne 29:
 PEP 589 (TypedDict) PEP 589 (TypedDict)
  
-Je vais me concentrer sur deux types de modifications dans cet article. D'abord, nous regarderons la modification de l'expression d'affectation.+Je vais me concentrer sur deux types de modification dans cet article. D'abord, nous regarderons la modification de l'expression d'affectation.
  
 **In this change, there is an additional operator for us. It's called the "walrus operator". It's coded as ":=" (turn your head to the left and you'll see why it's called "walrus"). This allows us to assign a value to a variable as part of an expression. At first glance that sounds like what we already have. But wait! Here is how it works... **In this change, there is an additional operator for us. It's called the "walrus operator". It's coded as ":=" (turn your head to the left and you'll see why it's called "walrus"). This allows us to assign a value to a variable as part of an expression. At first glance that sounds like what we already have. But wait! Here is how it works...
Ligne 47: Ligne 47:
 You can see that it saves us a line of code.** You can see that it saves us a line of code.**
  
-Dans cette modification, nous y trouvons un opérateur supplémentaire. Il est appelé « opérateur walrus » (morse). Il est codé ainsi : « := » (tournez votre tête à gauche et vous verrez pourquoi il est appelé « morse »). Il nous permet d'assigner une valeur à une variable faisant partie d'une xpression. À première vue, ça ressemble à ce que nous avons déjà. Mais, attendez ! Voici comment il fonctionne... +Dans cette modification, nous y trouvons un opérateur supplémentaire. Il est appelé « opérateur walrus » (morse). Il est codé ainsi : « := » (tournez votre tête à gauche et vous verrez pourquoi il est appelé « morse »). Il nous permet d'assigner une valeur à une variable faisant partie d'une expression. À première vue, ça ressemble à ce que nous avons déjà. Mais, attendez ! Voici comment il fonctionne :
- +
-Partons de l'idée que nous avons une liste. Nous l'appelons « lst ». Elle a 12 éléments. Présumons aussi que nous voulons vérifier si le nombre d'éléments est supérieur, disons, à 10. Plutôt facile, n'est-ce pas ? Voici la méthode ancienne (avant 3.8.0)...+
  
 +Partons de l'idée que nous avons une liste. Nous l'appelons « lst ». Elle a 12 éléments. Présumons aussi que nous voulons vérifier si le nombre d'éléments est supérieur, disons, à 10. Plutôt facile, n'est-ce pas ? Voici la méthode ancienne (avant la 3.8.0) :
 n = len(lst) n = len(lst)
  
Ligne 56: Ligne 55:
     print('List is too big.  {0} items found, expected 10.'.format(n))     print('List is too big.  {0} items found, expected 10.'.format(n))
          
-Maintenant, nous utiliserons le nouvelle opérateur walrus. Souvenez-vous que j'ai besoin d'avoir Python 3.8.0 pour lancer ce code...+Maintenant, nous utiliserons le nouvel opérateur walrus. Souvenez-vous que l'on doit avoir Python 3.8.0 pour lancer ce code :
  
 if (n := len(lst)) > 10: if (n := len(lst)) > 10:
Ligne 80: Ligne 79:
 Voyez ci-dessus un autre exemple, un peu plus « monde réel ». Voyez ci-dessus un autre exemple, un peu plus « monde réel ».
  
-Ici, nous importons une bibliothèque json et créons une chaîne compatible avec json contenant un certain nombre d'entrées de villes/états, latitude et longitude. Ensuite, nous utilisons la méthode de chargement de chaîne json.loads en l'assignant à une variable appelée « locations » (emplacements). Puis, nous obtenons la liste des entrées dans la variable « l ».+Ici, nous importons une bibliothèque json et créons une chaîne compatible avec json contenant un certain nombre d'entrées de villes/États, latitude et longitude. Ensuite, nous utilisons la méthode de chargement de chaîne json.loads en l'assignant à une variable appelée « locations » (emplacements). Puis, nous obtenons la liste des entrées dans la variable « l ».
  
 l = locations["locations"] l = locations["locations"]
Ligne 86: Ligne 85:
 Ensuite (page suivante, en haut à droite), nous parcourons la liste, une entrée à la fois, et nous utilisons l'opérateur walrus pour vérifier si l'entrée « City » (ville) commence avec le nom « Odessa ». Si c'est le cas, nous imprimons la nouvelle variable « city », la latitude et la longitude. Autrement, nous ignorons les données. Ensuite (page suivante, en haut à droite), nous parcourons la liste, une entrée à la fois, et nous utilisons l'opérateur walrus pour vérifier si l'entrée « City » (ville) commence avec le nom « Odessa ». Si c'est le cas, nous imprimons la nouvelle variable « city », la latitude et la longitude. Autrement, nous ignorons les données.
  
-La sortie de ce court programme serait...+La sortie de ce court programme serait :
  
 Odessa, Texas, USA Odessa, Texas, USA
Ligne 107: Ligne 106:
 print("Written for %s issue #%s %s, %s" %(mag,issue,month,year))** print("Written for %s issue #%s %s, %s" %(mag,issue,month,year))**
  
-L'autre nouveau point dont j'aimerais parler a trait à un ajout dans le format des f-strings. C'est en gros une aide pour l'utilisation de l'impression quand vous déboguez votre code. Les F-strings ont été introduites dans Python 3.6 et elles sont la troisième option de formatage des chaînes avec l'option de formatage « format % » (qui ne date pas d'hier) et l'option « str.format() » qui date de python 2.6.+L'autre nouveau point dont j'aimerais parler a trait à un ajout dans le format des f-strings. C'est en gros une aide pour l'utilisation de l'impression quand vous déboguez votre code. Les f-strings ont été introduites dans Python 3.6 et elles sont la troisième option de formatage des chaînes avec l'option de formatage « format % » (qui ne date pas d'hier) et l'option « str.format() » qui date de python 2.6.
  
-Je part du principe que vous comprenez tous l'option de format % je travaille avec depuis mes premiers articles. Je suis sûr que la plupart d'entre vous utilise aussi l'option str.format(), mais, juste au cas où, voici un rappel rapide.+Je pars du principe que vous comprenez tous l'option de format %je travaille avec depuis mes premiers articles. Je suis sûr que la plupart d'entre vous utilisez aussi l'option str.format(), mais, juste au cas où, voici un rappel rapide.
  
-Disons que vous voulez créer une chaîne pour l'impression qui comprend les variables de données suivantes...+Disons que vous voulez créer une chaîne pour l'impression qui comprend les variables de données suivantes :
  
 mag = "Full Circle Magazine" mag = "Full Circle Magazine"
Ligne 118: Ligne 117:
 year = "2019" year = "2019"
  
-Dans la méthodologie de format %, vous utiliserions...+Dans la méthodologie de format %, vous utiliserions :
  
 print("Écrit pour %s numéro #%s %s, %s" %(mag,issue,month,year)) print("Écrit pour %s numéro #%s %s, %s" %(mag,issue,month,year))
Ligne 142: Ligne 141:
 print('Écrit pour {} numéro #{} {}, {}'.format(mag, issue, month, year)) print('Écrit pour {} numéro #{} {}, {}'.format(mag, issue, month, year))
  
-qui fournit la même sortie. Notez que les accolades tiennent lieu de points de placement pour les variables de la portion de la déclaration .format(). Quand les accolades sont utilisées, vous pouvez, soit laisser vide (comme ci-dessus), soit fournir un nombre « index » qui est lié à l'index d'une déclaration de format comme celle-ci...+qui fournit la même sortie. Notez que les accolades tiennent lieu de points de placement pour les variables de la portion de la déclaration .format(). Quand les accolades sont utilisées, vous pouvez, soit laisser vide (comme ci-dessus), soit fournir un nombre « index » qui est lié à l'index d'une déclaration de format comme celle-ci :
  
 print('Écrit pour {0} numéro #{1} {2}, {3}'.format(mag, issue, month, year)) print('Écrit pour {0} numéro #{1} {2}, {3}'.format(mag, issue, month, year))
Ligne 159: Ligne 158:
 As you can see, it is much shorter (and readable), since we simply place an “f” before the opening quote and use the variable names within the curly brackets, forgetting about the ‘.format()’ porton.** As you can see, it is much shorter (and readable), since we simply place an “f” before the opening quote and use the variable names within the curly brackets, forgetting about the ‘.format()’ porton.**
  
-Encore une fois, ceci produit la même sortie que les autres. Encore une façon différente de faire dans ce qui suit :+Encore une fois, cela produit la même sortie que les autres. Encore une façon différente de faire dans ce qui suit :
  
 print('Écrit pour {mag} numéro #{issue} {month}, {year}'.format(mag=mag, issue=issue, month=month, year=year)) print('Écrit pour {mag} numéro #{issue} {month}, {year}'.format(mag=mag, issue=issue, month=month, year=year))
  
-Cependant, ceci est un peu pataud, et comme vous pouvez le voir, rend longue la déclaration quand plusieurs variables/emplacements sont utilisés. Dans un cas comme celui-ci, il oblige à écrire un code de débogage plus long que nécessaire.+Cependant, ceci est un peu pataud, et comme vous pouvez le voir, rend longue la déclaration quand plusieurs variables/emplacements sont utilisés. Dans un cas comme celui-ci, on doit écrire un code de débogage plus long que nécessaire.
  
 Maintenant, utilisons les f-strings. L'idée reste la même que pour str.format(), mais la raccourcit considérablement. Ça la rend aussi beaucoup plus lisible. Maintenant, utilisons les f-strings. L'idée reste la même que pour str.format(), mais la raccourcit considérablement. Ça la rend aussi beaucoup plus lisible.
Ligne 189: Ligne 188:
 This is so much easier to read in the debugging output in the terminal than just the previous output.** This is so much easier to read in the debugging output in the terminal than just the previous output.**
  
-Maintenant, pour la partie nouvelle, Python 3.8 nous donne la possibilité d'utiliser un signe « = ». Comme je l'ai dit plus haut, c'est surtout une aide pour le débogage. Compte-tenu des affectations de variable d'au-dessus, si nous voulons imprimer la valeur de la variable mag, nous pouvons simplement faire ceci...+Maintenant, pour la partie nouvelle, Python 3.8 nous donne la possibilité d'utiliser un signe « = ». Comme je l'ai dit plus haut, c'est surtout une aide pour le débogage. Présumant les affectations de variable ci-dessus, si nous voulons imprimer la valeur de la variable mag, nous pouvons simplement faire ceci :
  
 print(mag) print(mag)
  
-Et, comme nous le savons tous, ça imprimera...+Et, comme nous le savons tous, ça imprimera :
  
 Full Circle Magazine Full Circle Magazine
  
-Mais, si nous utilisons la nouvelle option = fournie par Python 3.8, nous pouvons utiliser ce qui suit...+Mais, si nous utilisons la nouvelle option = fournie par Python 3.8, nous pouvons utiliser ce qui suit :
  
 print(f"{mag=}") print(f"{mag=}")
  
-Ceci affichera :+Cela affichera :
  
 mag='Full Circle Magazine' mag='Full Circle Magazine'
Ligne 215: Ligne 214:
 Until next time, happy coding! ** Until next time, happy coding! **
  
-Il y a tant de choses nouvelles qui nous sont proposées par Python 3.8. Alors que la compilation de Python par vous-même peut s'avérer délicate, il y a beaucoup de sites Web qui offre des instructions pas-à-pas pour le faire. Souvenez-vousc'est un produit en bêta, il peut donc y avoir des problèmes. Vous pourriez vouloir attendre quelques mois jusqu'à ce qu'une des RC (Release candidate - pré-version publiée) devienne disponible. Ce peut être aussi une excellente idée de créer vous-même une sorte d'environnement virtuel pour vous assister dans votre travail avec la 3.8 sans risquer de casser quoique ce soit de ce que vous faites actuellement. Voyez-le comme un bac à sable.+Il y a tant de choses nouvelles qui nous sont proposées par Python 3.8. Alors que la compilation de Python par vous-même peut s'avérer délicate, il y a beaucoup de sites Web qui offrent des instructions pas-à-pas pour le faire. Toutefois, souvenez-vous que c'est un produit en bêta, il peut donc y avoir des problèmes. Vous pourriez vouloir attendre quelques mois jusqu'à ce qu'une des RC (Release candidate - pré-version publiée) devienne disponible. Ce peut être aussi une excellente idée de créer vous-même une sorte d'environnement virtuel pour vous assister dans votre travail avec la 3.8 sans risquer de casser quoi que ce soit de ce que vous avez actuellement. Voyez-le comme un bac à sable.
  
 Pour une liste détaillée des fonctionnalités qui arrivent dans Python 3.8, voyez https://docs.python.org/3.8/whatsnew/3.8.htmlhttps://docs.python.org/3.8/whatsnew/3.8.html Pour une liste détaillée des fonctionnalités qui arrivent dans Python 3.8, voyez https://docs.python.org/3.8/whatsnew/3.8.htmlhttps://docs.python.org/3.8/whatsnew/3.8.html
issue147/python.1565155850.txt.gz · Dernière modification : 2019/08/07 07:30 de d52fr