La Cheat Sheet complète de Python
Tags: french, python, django, beginners
Published: 2021-06-05 01:46:55

---
title: La Cheat Sheet complète de Python
published: true
description: 
tags: french, python, django, beginner
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/83ga7st8206e1vc2x2en.jpg
---
Si vous désirez plus de contenu francophone comme celui-ci, cliquer <strong>Follow<string> ou <a href="https://twitter.com/EricLeCodeur" class="twitter-follow-button">suivez-moi sur Twitter</a>
<hr>

Voici ma CheatSheet complète de Python. Si vous avez des questions ou recommendations n'hésitez pas.

Convention d'appellation
```python
# Le nom des variables s'écrivent en minuscule_snake
first_name = 'Mike'

# Les classes et modules s'écrivent en CamelCase
class InvoiceDetail:

# Les constantes s'écrivent en majuscule
MAX_USER = 100 

# Indentation : 4 espaces
if num > 9:
    print('hello')

```

Type de variable
```python
name = 'Mike' # Chaîne
age = 42 # Numérique entier
price = 199.99 # Numérique avec décimal
is_active = True # Boolean
colors = ['red', 'green', 'blue'] # Liste
products = { 'name': 'iPad Pro', 'price': 199.99 } # Dictionnaire
MAX_USER = 100 # Constante

```

Conversion entre les types
```python
# Le typage en Python est strict
number = 50 + "50" # Retourne un erreur

# Convertir une chaîne en nombre entier 
number = 50 + int("50") # 100

# Convertir un nombre en chaîne de caractères
my_text = str(199.99)   # "199.99"

# Convertir une chaîne en nombre décimal
my_number = float('21.99') # 21.99

# Obtenir le type de variable
type(my_text) # <class 'str'>
type(my_number) # <class 'float'>

# Vérifier si la chaîne est un nombre
isdigit('8') # True

# Vérifier le type de variable
isinstance(my_number, int) # True

```

Chaînes de caractères
```python
# Declaration
name = 'Mike'
# ou
name = "Mike"
# ou
message = """Ceci est une chaîne
 de caractère 
multi-lignes"""

# Caractères spéciaux. Ex: \n = Saut de ligne
message = "Hello \nWorld"

# Les chaîne 'raw' ignore les caractères spéciaux
message = r"https:\\example.com\index.html"

# Convertir en minuscule
name.lower() # mike

# Convertir en majuscule
name.upper() # MIKE

# Convertir la première lettre en majuscule
name.capitalize() # Mike

# Convertir la première lettre de chaque mots en majuscule
name = 'mike taylor'
name.title() # Mike Taylor

# Utilisation des méthodes à la chaîne (Une après l'autre)
name = 'MIKE'
name.lower().capitalize() # Mike

name = 'Mike'

# Vérifier si commence par une chaîne spécifique ?
name.startswith('M') # true

# Vérifier si se termine par une chaîne spécifique ?
name.endswith('ke') # true

# Renvois le nombre de caractère
len(name) # 4

# Concaténation de chaine de caractère
full_name = first_name + ' ' + last_name

# Les chaînes formatés, remplacent le contenu des expressions entre les {} par leur valeur.
full_name = f"{first_name} {last_name}"

# Enlève les espaces blanc au début et à la fin
text = ' this is a text with white space '
text.strip() 

name = 'Mike'
# Retourne le premier caractère
name[0] # M

# Retourne le dernier caractère
name[-1] # e

# Retourne une chaîne partiel
name[1:3] # ik

# Remplace une partie de la chaîne par une autre chaîne
name.replace('M', 'P') # Pike

# Trouve une chaîne dans la chaîne (retourne la # de la position ou -1 si pas trouvé)
name.find('k') # 2

# Convertir une liste en chaîne de caractères
colors = ['red', 'green', 'blue']
', '.join(colors) # 'red, green, blue'

```

Fonctions communes
```python
# Imprimer dans la console
print('Hello World')

# Impression multiple
print('Hello', 'World') # Hello World

# Impression multiple
print(10 * '-') # ----------

# Imprimer le contenu de la variable formaté
from pprint import pprint
pprint(products)

# Saisir un entrée fait par le clavier
name = input('What is your name? ')

# Aléatoire (entre 0 et 1)
from random import random 
print(random()) # 0.26230234411558273

# Aléatoire entre x et y
from random import randint
print(randint(3, 9)) # 5

# Arrondir
number = 4.5
print(round(number)) # 5

# Arrondir avec précision décimal
solution = round(12.9582, 2) # 12.96

```

Exécution conditionnel
```python
if x == 4:
    print('x is 4')
elif x != 5 and x < 11:
   print('x is between 6 and 10')
else:
   print('x is 5 or greater than 10')

# Retourne True si contenu dans la liste 
colors = ['red', 'green', 'blue', 'yellow']
if 'blue' in colors:

# Retourne False si PAS contenu dans la liste 
if 'white' not in colors:

# Opérateur Ternary
print('y = 10') if y == 10 else print('y != 10') 

# Opérateur Ternary (version courte)
is_valid = 'Valid'
msg = is_valid or "Not valid" 

# Expression Falsy, retourne toujours False
False, None, 0, empty string "", empty list [], (), {}

# Expression Truthy, retourne toujours True
True, not zero and not empty value 

```
Execution des boucles
```python
# Boucle sur une liste
for item in items:
    print(item)

# Boucle avec un index
for index, item in enumerate(items):
    print(index, item)

# Intervalle
for i in range(10):  #0..9
    print(i)

for i in range(5, 10): #5..9
    print(i)

# Boucle: While loop
while x > 10:
    print(x)
    # exit loop
    if x == 5:
        break
    # Jump to next while
    if x == 3:
        continue
    
    x += 1

# Boucle: For loop (dictionnaire)
for key, value in my_dict.items():
    print(key, value)

# List comprehension: 
# values = [(expression) for (value) in (collection)]
items = [value*2 for value in items]

# List comprehension avec conditionnel
# values = [expression for value in collection if condition]
even_squares = [x * x for x in range(10) if x % 2 == 0]

```

List et Tuple
```python
# Créer une liste
fruits = ['orange', 'apple', 'melon']

# Ajouter à une Liste
fruits.append('banana')

# Retourne le nombre d'élément dans une liste
nb_items = len(fruits)

# Supprimer l'élément no x
del fruits[1]   # supprime 'apple'

# Accès directe à partir d'une position x
fruits[0]  # premier item
fruits[-1] # desnier item

# Retoune une partie d'une liste: my_list[start:finish:step] 
fruits = fruits[1:3]
fruits[:3]  # premier 3 items
fruits[2:]  # dernier 2 items
copy_fruits = fruits[:] # copie la liste

# Retourne une list inversé
revserve_fruits = fruits[::-1]

#Créer une list à partir d'une chaîne de caractères
colors = 'red, green, blue'.split(', ')

# Concatenation de deux listes
color1 = ['red', 'blue']
color2 = ['green', 'yellow']
color3 = color1 + color2

# Concatenation de deux listes en utilisant la technique 'unpacking'
color3 = [*color1, *color2]

# Assignation multiple
name, price = ['iPhone', 599]

#Créer une liste de type TUPLE (lecture seul)
colors = ('red', 'green', 'blue')

# Trier une liste
colors.sort() # ['blue', 'green', 'red']
colors.sort(reverse=True) # ['red', 'green', 'blue']
colors.sort(key=lambda color: len(color)) # ['red', 'blue', 'green']

```
Dictionnaire
```python
# Créer une dictionnaire (vide)
product = {}

# Créer une dictionnaire avec clé et valeur
product = {'id': 100, 'name': 'iPadPro'}

# Accès au dictionnaire par une clé
print(product['name']) # iPadPro

# Accès au dictionnaire avec fonction 'get'
product.get('name') # Si clé existe pas alors retourne 'None'
product.get('name', 'default value') # Si clé existe pas alors retourne une valeur par défaut

# Adding a new key/value
product['description'] = "Modern mobile device"

# Obtenir une liste des clés d'un dictionnaire
product.keys() # ['id', 'name', 'description']

# Obtenir une liste des valeurs d'un dictionnaire
product.values() # ['100', 'iPadPro', 'Modern mobile device']

# Créer une liste de dictionnaire
products = [
    {'id': 100, 'name': 'iPadPro'},
    {'id': 200, 'name': 'iPhone 12'},
    {'id': 300, 'name': 'Charger'},
]

# Accès à une liste de dictionnaire
print(products[2]['name']) # Charger

# Recherche dans une liste de dictionnaire
items_match = [item for product in products if product['id'] == 300]
# [{'id': 300, 'name': 'Charger'}]

# Somme dans une liste de dictionnaire
total = sum([product['price'] for product in products])
```

Fonctions
```python
# Créer une fonction
def say_hello():
    print('Hello World')

# Fonction avec arguments (et valeur par défaut)
def say_hello(name = 'no name'):
    print(f"Hello {name}") 

# Fonction avec arguments (et valeur optionnel)
def say_hello(name = None):
    if name:
        print(f"Hello {name}") 
    else:
        print('Hello World')

# Appel d'une fonction
say_hello('Mike') # Hello Mike

# Appel d'une fonction avec un argument nommé
say_hello(name = 'Mike') 

# Fonction retournant une valeur
def add(num1, num2):
   return num1 + num2

num = add(10, 20) # 30

# Fonction avec un nombres indéterminé d'arguments (*args)
def say_hello(*names):
    for name in names:
        print(f"Hello {name}")

# Fonction avec un nombres indéterminé d'arguments de type keyword (**kwargs)
def say_hello(**kwargs):
    print(kwargs['name'])
    print(kwargs['age'])

say_hello(name = 'Mike', age = 45)

# Fonction Lambda (syntax abbrégé)
x = lambda num : num + 10
print(x(20)) # 30

```

Date et heure
```python
from datetime import datetime, timedelta

# Retourne la date et l'heure courante
datetime.now()

# Créer un object date et time courant
date = datetime(2020,12,31) # Dec 31 2020

# Addition de date et d'heure (weeks, days, hours, minutes, seconds) 
new_year = date + timedelta(days=1) # Jan 1 2021

# Convertir une date en chaîne de caractère
new_year.strftime('%Y/%m/%d %H %M %S') # 2021/01/01 00 00 00 
new_year.strftime('%A, %b %d') # Friday, Jan 01

# Extraire l'année et le mois d'une date
year = new_year.year # 2021
month = new_year.month # 01

```
Gestion des fichiers
```python
# Lecture d'un fichier
filename = 'demo.txt'
with open(filename) as file:
    lines = file.readlines()

for line in lines:
    print(line)

# Écriture d'un fichier
filename = 'settings.txt'
with open(filename, 'w') as file:
    file.write("MAX_USER = 100")

# Est-ce que le fichier existe?
from os import path
path.exists('templates/index.html') # True/False

# Exportation en CSV
import csv
csv_file = 'export.csv'
csv_columns = products[0].keys() # ['id', 'name']
with open(csv_file, 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
    writer.writeheader()
    for item in products:
        writer.writerow(item)

```

Gestion des exceptions et erreurs
```python
age_string = input('Your age? ')

try:
    age = int(age_string)
except ValueError:
    print("Please enter a numeric value")
else:
    print("Your age is saved!")

```

Programmation orienté objet
```python
# Créer une classe
class Product:
    pass

# Créer un attribue
class Product:
    nb_products = 0

print(Product.nb_products) # 0

# Créer un nouvel instance
product_1 = Product()

# Créer un attribue d'instance
class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price

# Créer un instance avec des attribues
product_1 = Product('iPadPro', 699.99)
product_2 = Product('iPhone12', 799.99)
print(product_1.name) # iPadPro

# Créer un méthode sur l'instance
class Product()
    def display_price(self):
        return f"Price : {self.price}"

print(product_1.display_price())

# Méthode de classe
class Product:
    # ... 
    @classmethod
    def create_default(cls):
        # Créer une instance 
        return cls('Product', 0) # nom par défaut, prix par défaux

product_3 = Product.create_default() 

# Méthode statique
class Product:
    # ... 
    @staticmethod
    def trunc_text(word, nb_char):
        return word[:nb_char] + '...' 

product_3 = Product.trunc_text('This is a blog', 5) # This i... 

# Héritage
class WebProduct(Product):
    def __init__(self, name, price, web_code):
        super().__init__(name, price)
        self.web_code = web_code

# Convention de nom pour variable d'instance 
def __init__(self, price):
    self.__price = price

# Getter et setter
class Product:
    def __init__(self):
        self.__price = 0

    @property
    def price(self):
        return self.__price

    @price.setter
    def price(self, value):
        self.__price = value

# Mixins
class Mixin1(object):
    def test(self):
        print "Mixin1"

class Mixin2(object):
    def test(self):
        print "Mixin2"

class MyClass(Mixin2, Mixin1, BaseClass):
    pass

obj = MyClass()
obj.test() # Mixin2

```
Si vous aimez ce genre de post et vous aimeriez en lire d'autre, suivez-moi sur dev.to ou <a href="https://twitter.com/EricLeCodeur" class="twitter-follow-button">suivez-moi sur Twitter</a>