"Effective Python 2nd Edition" Chapitre 1 <Pythonic Thinking>

introduction

Environnement d'exécution

Lors de la publication de l'exemple de code, publiez le résultat de l'exécution dans l'environnement d'exécution suivant. Nous essaierons de le fournir sous une forme aussi exempte d'erreurs que possible, mais veuillez nous pardonner si cela ne fonctionne pas ou est faux.

Chapitre 1 <Pensée pythonique>

import this Connaissez-vous "Le Zen de Python"? Lorsque vous lancez l'interpréteur Python et exécutez ʻimport this`, "The Zen of Python" s'affiche comme indiqué ci-dessous.

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Voici ** une description des principes directeurs pour ceux qui créent le langage de programmation lui-même, "Python", sous la forme d'un mot **. Il a été écrit par Tim Peters, un contributeur majeur à Python, et je pense qu'il décrit ** l'esprit et la philosophie de "Python" **. Si vous développez un logiciel à l'aide de Python, vous voudrez le lire une fois. (Mais je l'ai appris pour la première fois récemment ...

Il y a un article de Qiita qui est expliqué en détail avec la traduction japonaise, donc je pense qu'il sera plus facile d'imaginer chaque proverbe si vous regardez cela. Le zen de Python - Qiita

Au fait, selon PEP 20 - Le Zen de Python, lorsque vous exécutez ʻimport this` dans l'interpréteur, il dit "Le Zen de Python". Semble être affiché comme un œuf de Pâques.

Vous devriez utiliser not somelist au lieu de len (somelist) == 0 (à partir de l'élément 2)

Quand vous voulez découvrir qu'une liste est vide, vous voulez l'évaluer comme ʻif len (somelist) == 0, mais à la place vous devriez écrire ʻif pas une liste. Cela tire parti du fait que lorsque la liste est vide, elle est implicitement évaluée comme «False», PEP 8 (Python Code Style Guide). Il est également décrit dans / ja / latest /).

Lors de l'évaluation de valeurs binaires, vous écririez ʻif flag au lieu de ʻif flag == True, mais il peut être plus facile de se souvenir si vous pensez que c'est la même chose.

N'utilisez pas ʻelse in foretwhile` (à partir du point 9)

Les instructions for et while ont un bloc ʻelse qui n'est ** exécuté que si break` n'est pas exécuté dans la boucle.

for i in range(3):
    print(i)
    if i == 1:
        break
else:
    print("Hello")  #Il n'est pas affiché car la pause est exécutée

>>>
0
1
for i in range(3):
    print(i)
else:
    print("Hello")  #Il est affiché car la pause n'a pas été exécutée

>>>
0
1
2
Hello

Comme vous pouvez le voir dans l'exemple de code ci-dessus, vous ne savez pas quand ʻelse est exécuté et quand ʻelse n'est pas exécuté. Un code qui n'est pas intuitif de cette manière est trompeur et peut provoquer des bogues et ne doit pas être utilisé.

Au lieu de cela, vous pouvez créer et implémenter une fonction d'assistance comme celle-ci:

def hoge():
     for i in range(3):
         print(i)
         if i == 1:
             return False
     return True

if not hoge():
    print("Hello")

>>>
0
1
Hello

La formule de substitution empêche la répétition (à partir du point 10)

Les expressions d'affectation sont une nouvelle syntaxe ajoutée dans Python 3.8. Normalement, dans l'affectation "instruction", écrivez ʻa = b, mais dans l'affectation "expression", écrivez ʻa: = b. En utilisant l'expression d'affectation, la partie où le code a été dupliqué dans le passé peut être écrite de manière concise comme suit.

#Jusque là
count = fresh_fruit.get('lemon', 0)
if count:
    make_lemonade(count)
else:
    out_of_stock()
#Désormais (lors de l'écriture à l'aide d'une formule d'affectation)
if count := fresh_fruit.get('lemon', 0):  #L'affectation au comptage et à l'évaluation peut être effectuée sur une seule ligne en même temps
    make_lemonade(count)
else:
    out_of_stock()

De plus, par exemple, si vous souhaitez écrire du code qui extrait une chaîne de caractères correspondante à l'aide d'une expression régulière, vous pouvez l'écrire de manière concise comme suit.

#Jusque là
import re
string = "abcABC"

match = re.match(r"([a-z]+)", string)
if match:
    print(f"{match.group(1)}")
else:
    print("Not match")

>>>
abc
#Désormais (lors de l'écriture à l'aide d'une formule d'affectation)
import re
string = "abcABC"

if match := re.match(r"([a-z]+)", string):  #L'affectation à la correspondance et l'évaluation peuvent être effectuées en une seule ligne
    print(f"{match.group(1)}")
else:
    print("Not match")

>>>
abc

À propos, l'opérateur d'expression d'affectation : = est appelé l'opérateur morse car il ressemble aux globes oculaires et aux crocs du seiuchi. Lorsque vous prononcez "a: = b`", vous dites également "a Walrus b". Vous voudrez le prononcer comme "un morse b", mais vous le reformulerez probablement comme "un deux-points égal b" sans pouvoir communiquer avec l'autre partie ... lol

Résumé

Nous avons présenté le chapitre 1 «Python efficace 2e édition» .

Je voudrais vous présenter le chapitre 2 et au-delà petit à petit, alors revoyons-nous la prochaine fois!

Site de référence

Recommended Posts

"Effective Python 2nd Edition" Chapitre 1 <Pythonic Thinking>
"Effective Python 2nd Edition" Chapitre 3 <Fonctions>
Livre de fourmis avec python (Chapter3 édition intermédiaire ~)
Première 3e édition de Python
[Python] Chapitre 01-01 À propos de Python (First Python)
Élément de mémo Python efficace 3