Traduction libre de « Writing idiomatic python » de @jeffknupp
- du grec « idios » signifiant « propre », « spécial »
-
idioma (pour le latin), idiotisme, qui est une forme ou locution propre à une langue, restant impossible à traduire littéralement dans une autre langue de structure analogue ex: anglicisme.
-
idiôma (en grec), particularité propre à une langue
- Du code cryptique peut être rédigé par des programmeurs de tous les niveaux, et ce, peu importe le langage de programmation
En écrivant du code idiomatique.
- Écrire du code et se faire réviser par nos collègues plus expérimentés
- Lire le code de nos collègues plus expérimentés
- Lire et appliquer le PEP8
- Lire le code de modules existants et populaires
- Lire le bouquin de Jeff Knupp :)
!python
if x <= y and y <= z:
return True
!python
if x <= y <= z:
return True
!python
name = 'Bernard'
address = 'Québec, CA'
if name: print(name)
print(address)
!python
name = 'Bernard'
address = 'Québec, CA'
if name:
print(name)
print(address)
!python
is_generic_name = False
name = 'Tom'
if name == 'Tom' or name == 'Dick' or name == 'Harry':
is_generic_name = True
!python
is_generic_name = False
name = 'Tom'
if name in ("Tom", "Dick", "Harry"):
is_generic_name = True
!python
None == False
0 == False
[] == False # liste vide
{} == False # dict vide
!python
def empty_list(a):
# la liste "a" est vide
if len(a) == 0:
return True
return False
!python
def empty_list(a):
# la liste "a" est vide
if not a:
return True
return False
!python
def empty_list(a):
# la liste "a" est vide
return not a
!python
a = []
is_empty = False if a else True
# ce qui suit est mieux :)
is_empty = len(a) == 0
!python
alphabet = list("abcdefghijklmnopqrstuvwxyz")
index = 0
while index < len(alphabet):
print alphabet[index]
index += 1
!python
alphabet = list("abcdefghijklmnopqrstuvwxyz")
for letter in alphabet:
print letter
!python
alphabet = list("abcdefghijklmnopqrstuvwxyz")
index = 0
for letter in alphabet:
print("{}, {}".format(index, letter))
index += 1
!python
alphabet = list("abcdefghijklmnopqrstuvwxyz")
for index, letter in enumerate(alphabet):
print("{}, {}".format(index, letter))
!python
for user in users:
has_invalid_email = False
for email in user.emails:
if email_is_invalid(email):
has_invalid_email = True
print("Possède un courriel invalide !")
break
if not has_invalid_email:
print("Ces courriels sont valides !")
!python
for user in users:
for email in user.emails:
if email_is_invalid(email):
print("Possède un courriel invalide !")
break
else:
print("Ces courriels sont valides !")
!python
class UneClasseGigantesqueEtJavaesque:
pass
une_variable = "foo"
def une_fonction():
pass
UNE_CONSTANTE = 60 * 60
!python
path = "../foo/" + username + "/Documents"
!python
import os.path as op
path = op.join("..", "foo", username, "Documents")
!python
a_string = ""
if key in my_dict:
a_string = my_dict[key]
else:
a_string = "une valeur par défaut"
!python
a_string = my_dict.get(key, "une valeur par défaut")
!python
# additionner 5 à tous les chiffres de la liste "a"
a = range(0, 10)
b = []
for index, item in enumerate(a):
b[index] = item + 5
a = b
!python
# additionner 5 à tous les chiffres de la liste "a"
a = range(0, 10)
a = [x + 5 for x in a]
Utiliser des generator expressions au lieu des list comprehensions pour les listes avec une longueur non connu
!python
# 500 millions de users = ouch
for name in [user.name.upper() for user in users]:
print name
Utiliser des generator expressions au lieu des list comprehensions pour les listes avec une longueur non connu
!python
# 500 millions de users = no hay problema senor !
for name in (user.name.upper() for user in users):
print name
!python
user_email = {}
for user in users_list:
if user.email:
user_email[user.name] = user.email
!python
user_email = {user.name: user.email
for user in users_list if user.email}
!python
f = open("un_fichier.txt", "r")
print f
f.close()
!python
with open("un_fichier.txt", "r") as f:
print f
# close implicite à la sortie du with !
!python
loved = ["python", "books", "fruits", "latte"]
loved_string = ""
for i in loved:
loved_string += i + " and "
print("I love {} !".format(loved_string))
# I love python and books and fruits and latte and !
!python
loved = ["python", "books", "fruits", "latte"]
print("I love {} !".format(" and ".join(loved)))
# I love python and books and fruits and latte !
- Je pars pour montréal et j'apporte: un bouquin pour la route
- Fruit que je mangerai éternellement: Melon d'eau
- bernardchhun.com