Outils pour utilisateurs

Outils du site


initiation_a_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
initiation_a_python [2018/07/04 13:36] – [Ouvrir Geany] sergeinitiation_a_python [2021/08/21 13:41] (Version actuelle) – [PEP8] serge
Ligne 1: Ligne 1:
-======Initiation à python======+======Python: Initiation à python======
  
-=====Python===== +<WRAP center round box 80% centeralign> 
-====Installation==== +**[[toutes_les_pages_sur_python|Toutes les pages sur Python]] sans les pages sur {{tagpage>kivy|Kivy}}**\\ 
-Linux: c'est déjà installé +</WRAP>
-Win$ et Mac: débrouillez-vous ?+
  
-====Interpréteur==== 
-Je décide de [[atelier_python_niveau_1#bpython|bpython3]] 
  
 +<WRAP center round box 80% centeralign>
 +**{{tagpage>atelier_python|Cours de python}}**
 +</WRAP>
 +
 +Cet atelier est animé comme un TD. Aucun cours théorique, que de la pratique avec des exemples fun 8-)\\
 +Et surtout je ne commence pas par **Chapitre 1 ** POO Programmation Orienté Objet.
 +
 +Ce tuto est très inspiré de Apprenez à programmer en Python de Vincent Le Goff [[http://user.oc-static.com/pdf/223267-apprenez-a-programmer-en-python.pdf|Télécharger le pdf]]
 +
 +  * **[[https://sametmax.com/ce-quil-faut-savoir-en-python/|Lis tout ça, tu seras expert python dans 10 ans]]**
 +  * **[[https://docs.python.org/fr/3/|Documentation officielle]]** docs.python.org/fr
 +
 +=====Les sources complètes de ces TD=====
 +  * https://replit.com/join/xzqjcqvvrp-sergelabo
 +  * **[[https://github.com/sergeLabo/formation_python|Formation Python Support pour atelier d'initiation python]]** sur GitHub.
 +
 +=====Installation=====
 +  * **[[python_installation]]**
 =====Quelques commandes===== =====Quelques commandes=====
 +====Tester dans un navigateur====
 +  * **[[https://www.python.org/shell/|L'interpréteur de python.org]] **
 +{{ :media_14:python_org.png?600 |}}
 +
 +===Un terminal quelconque===
 +Ouvrir un terminator:
 +{{ :media_14:terminator_python.png?600 |}}
 +  
 +=====Premiers pas=====
 +Ouvrir un terminator
 +  bpython3
 <code python> <code python>
 bpython version 0.16 on top of Python 3.5.3 /usr/bin/python3 bpython version 0.16 on top of Python 3.5.3 /usr/bin/python3
Ligne 27: Ligne 53:
 >>>  >>> 
 </code> </code>
- 
-<code python></code> 
  
 ===int float string opération=== ===int float string opération===
Ligne 49: Ligne 73:
  
 ===Mots clé=== ===Mots clé===
 +  * https://docs.python.org/fr/3/reference/lexical_analysis.html#keywords
 <code python> <code python>
-and as class def elif else except False for from global if import in +False      await      else       import     pass 
-lambda None not or pass return True try while with+None       break      except     in         raise 
 +True       class      finally    is         return 
 +and        continue   for        lambda     try 
 +as         def        from       nonlocal   while 
 +assert     del        global     not        with 
 +async      elif       if         or         yield
 </code> </code>
  
Ligne 58: Ligne 88:
 1  # int  1  # int 
 3.14  # float  3.14  # float 
-"Labbomedia # str +"Labomedia # str 
 [1, 2, 3]  # list [1, 2, 3]  # list
 {"1": "tot", "2": 1}  # dict {"1": "tot", "2": 1}  # dict
 </code> </code>
 +
 =====Fonction===== =====Fonction=====
- 
 <code python> <code python>
 >>> type(1) >>> type(1)
Ligne 70: Ligne 100:
 Hello, World! Hello, World!
 </code> </code>
- 
- 
  
 =====Ouvrir Geany===== =====Ouvrir Geany=====
-Définir le Construire+====Geany: un éditeur sympa multiplateforme==== 
 +  * **[[python_installation#un_edi_multiplateforme]]** 
 +====Premier pas avec geany==== 
 +Créer un nouveau fichier et l'enregistrer avec une extension.py 
 La suite se fait en collant le code dans ce génie. La suite se fait en collant le code dans ce génie.
  
Ligne 95: Ligne 127:
 print(d + e) print(d + e)
  
-print(str(a+ e)+print(a + e)
  
 print(a+e) print(a+e)
 +
 +print(f"Je suis un f-string {t} ou encore {a+e} çà")
 </code> </code>
 +
 +
 +=====Les différents types de variable=====
 +====Liste====
 +<code python>
 +l = [1, 2, 3, 4, 5]
 +# On compte à partir de zéro
 +l[1] = 2
 +</code>
 +  * [[http://apprendre-python.com/page-apprendre-listes-list-tableaux-tableaux-liste-array-python-cours-debutant|Les listes sur apprendre-python.com]]
 +  * [[https://www.dailymotion.com/video/xbk6sd?playlist=x22t3u|Pythonnerie n°4: les listes]]
 +====Dictionnaire====
 +<code python>
 +d = {1: "blender", 2: "gimp"}
 +# Les clés doivent être immuables
 +d[3] = "inkskape"
 +print(d)
 +</code>
 +
 +[[http://apprendre-python.com/page-apprendre-dictionnaire-python|Les dictionnaires sur apprendre-python.com]]
 +
 +====Tuples====
 +<code python>
 +t = ("127.0.0.1", 8888)
 +print(t)
 +t = "127.0.0.1", 8888
 +print(t)
 +</code>
 +
 +[[http://apprendre-python.com/page-apprendre-tuples-tuple-python|Les tuples sur apprendre-python.com]]
 +
 +====Set====
 +Liste toutes les valeurs existantes, il n'y a pas de doublons.
 +<code python>
 +my_set = {1, 2, 3, 4, 2, 1}
 +print(my_set)
 +</code>
 +
  
 =====Condition===== =====Condition=====
 +====si oui si non====
 <code python> <code python>
 a = -6 a = -6
Ligne 121: Ligne 194:
 </code> </code>
  
 +**Indentation: Toujours utiliser la tabulations avec 4 espaces: quand lama fâché, lui toujours faire ainsi !**
 ====Opérateur de comparaison==== ====Opérateur de comparaison====
 +  * https://docs.python.org/fr/3/reference/lexical_analysis.html#operators
 <code python> <code python>
-== +==    !=          <=    >=
-!= +
-< +
-> +
-<= +
->=+
 </code> </code>
  
-=====Boolean===== 
  
-=====boucle===== +=====Boucle===== 
- +**Table du 4** 
-=====Itération=====+<code python> 
 +print("1 x 4 =", 1*4) 
 +print("1 x 4 =", 1*4) 
 +... 
 +... 
 +print("10 x 4 =", 10 * 4) 
 +</code> 
 +**Les répétitions sont très sales !** 
 +<code python> 
 +
 +while i >10: 
 +    print(str(i) + " x 4 =", i * 4) 
 +    i +
 +</code> 
 +**ou encore** 
 +<code python> 
 +for i in range(10): 
 +    print(str(i) + " x 4 =", i * 4) 
 +</code> 
 +<code python> 
 +for i in [0, 1, 2, 3]:  # seulement jusque 3 
 +    print(str(i) + " x 4 =", i * 4) 
 +</code> 
 +**Itération** 
 +<code python> 
 +chaine "Labomedia" 
 +for lettre in chaine: 
 +    print(lettre) 
 +</code>
  
 =====Fonctions===== =====Fonctions=====
 +====Pourquoi faire des fonctions ou des classes ?====
 +  * Pour éviter les répétitions, sources d'erreurs, surtout si une modifications de ces répétitions est nécessaire.
 +  * Pour structurer le projet.
 +  * Pour tester des bouts de code individuellement.
 +  * Pour éviter les problèmes avec les variables globales.
 +  * Pour pouvoir réutiliser des bouts de codes.
 +  * Permettre un travail en équipe en découpant un projet en bout de projet indépendant.
  
-===Return===+**Une fonction fait une chose. Une class fait une chose** 
 +  * [[http://apprendre-python.com/page-apprendre-creer-fonction-en-python|Apprendre à créer des fonctions en python]]
  
-=====Module=====+====Simple==== 
 +<code python> 
 +def ma_fonction(): 
 +    print("Demain")
  
-=====Module get_object=====+def ta_fonction(a): 
 +    print(a)
  
-=====Package=====+def sa_fonction(a, n): 
 +    while i < n: 
 +        print(a, i) 
 +         
 +ma_fonction() 
 +ta_fonction("1"
 +ta_fonction("Guido"
 +sa_fonction(5, 3) 
 +</code> 
 + 
 +====Arguments par défaut==== 
 +<code python> 
 +def fonct(a=1, b=2, c=3): 
 +    print(a, b, c) 
 +     
 +fonct() 
 +fonct(10) 
 +fonct(b=10) 
 +</code> 
 + 
 +====Return==== 
 +Une fonction sans return retourne None 
 +<code python> 
 +def test1(): 
 +    """Retourne None""" 
 +    print("toto"
 +     
 +def test2(): 
 +    """Retourne """ 
 +    print("toto"
 +    return "Python c'est fun" 
 +     
 +a = test1() 
 +print(a) 
 + 
 +b = test2() 
 +print(b) 
 +</code> 
 + 
 +La fonction s'arrête  sur le return, le code après return n'est pas excécuté. 
 + 
 +<code python> 
 +def test(a): 
 +    if a < 0: 
 +        print("a<0"
 +        return 1 
 +    else: 
 +        print("a>0"
 +        return 0 
 +    print("fin"
 +         
 +test(1) 
 +test(-1) 
 +</code> 
 + 
 +====Fonctions prédéfinies==== 
 +<code python> 
 +print( abs(-20), 
 +       max(2, 50), 
 +       int(str(1)), 
 +       type(int(str(1)), 
 +       dir(1)) 
 +</code> 
 +=====Module Package Import===== 
 +===def=== 
 +Une ou des fonctions dans un fichier est un module. Plusieurs modules font un package. 
 + 
 +===Module simple=== 
 + 
 +<file python called.py> 
 +def je_suis_appeler(phrase): 
 +    print("phrase =", phrase) 
 +</file> 
 + 
 +<file python I_call.py> 
 +from called import je_suis_appeler 
 + 
 +p = "Une phrase exemple à la noix" 
 +je_suis_appeler(p) 
 +</file> 
 + 
 +Exécuter: 
 +  python3 I_call.py 
 + 
 +===Bibliothèque standard=== 
 +  * **[[https://docs.python.org/fr/3/py-modindex.html#cap-t|Index des modules Python]]** 
 + 
 +===time=== 
 +<code python> 
 +import time 
 + 
 +print(dir(time)) 
 +print("Il est", time.time()) 
 +</code> 
 + 
 +<code python> 
 +import datetime 
 + 
 +print(dir(datetime)) 
 +print("Nous sommes le", datetime.date.today()) 
 +</code>
  
 =====Exception===== =====Exception=====
 +<code python>
 +try:
 +    resp = 1 / 0
 +except:
 +    print("Division par zéro impossible")
 +
 +try:
 +    resp = 1 / 0
 +except ZeroDivisionError as e:
 +    print(e)
 +</code>
 +
 +**[[https://docs.python.org/3.5/library/exceptions.html|La doc officielle]]**
 +===Pass===
 +**Du sale**
 +<code python>
 +try:
 +    resp = 1 / 0
 +    return resp
 +except:
 +    pass
 +</code>
 +**Du propre**
 +Ne jamais passer les erreurs sous silence, ou les faire taire explicitement.
 +<code python>
 +def exemple_propre(a):
 +    try:
 +        return 1 / a
 +    except ZeroDivisionError as e:
 +        print(e)
 +        return None
 +    except:
 +        return None
 +</code>
 +
 +**Pass pour du code en construction**
 +<code python>
 +def je_multiplie():
 +    pass
 +    
 +def j_imprime():
 +    pass
 +</code>
 +
 +=====Type=====
 +Python est fortement typé: il utilise le **[[https://fr.wikipedia.org/wiki/Duck_typing|typage canard (duck typing)]]** !
 +
 +<code python>
 +t = type({1, 2, 3, 4, 2, 1})
 +print(t)
 +</code>
 +=====Variables globales et locales, espaces de noms=====
 +Le fichier pi.py n'a rien à voir avec pi ou PI ou pi()
 +
 +<code python pi.py>
 +def pi():
 +    return "Mauvaise blague"
 +</code>
 +
 +<code python jeu.py>
 +from pi import pi as pipi
 +
 +# Toutes les variables globales en majuscule
 +PI = 3.14
 +
 +# Ce pi est une variable globale
 +pi = pipi()
 +
 +def print_pi(pi):
 +    """pi est une variable locale"""
 +    print(pi)
 +    
 +def print_a(a):
 +    print(a)  
 +    
 +print_pi(3)
 +print_a(3)
 +print_pi(PI)
 +print_pi(pi)
 +print_pi()
 +</code>
 +
 +
 +=====POO=====
 +
 +====Programmation Orientée Objet====
 +**[[https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet|Pour votre culture personnelle !]]**
 +
 +====Pourquoi des class ?====
 +**[[initiation_a_python#pourquoi_faire_des_fonctions_ou_des_classes|Python: Initiation à python Pourquoi des fonctions ou des class]]**
 +
 +====Les class permettent de créer des objets====
 +<code python>
 +class Subliminale:
 +    pass
 +
 +class Minimale:
 +    print("Un objet Minimale créé !")
 +
 +class MyTest:
 +    def my_test(self):
 +        print("Premier test")
 +
 +class Bicycle:
 +    """Un vélo"""
 +
 +    def __init__(self, color, kind):
 +        """C'est le constructeur"""
 +        
 +        self.color = color
 +        self.kind = kind
 +
 +s = Subliminale()
 +print(type(s))
 +
 +m = Minimale()
 +
 +b = Bicycle("rouge", "vtt")
 +print(b.color)
 +print(b.kind)
 +
 +</code>
 +
 +
 +=====La philosophie Python=====
 +====Zen of python====
 +Dans l'interpréteur
 +<code python>
 +import this
 +</code>
 +<code text>
 +Préfère :
 +      la beauté à la laideur,
 +      l'explicite à l'implicite,
 +      le simple au complexe
 +      et le complexe au compliqué,
 +      le déroulé à l'imbriqué,
 +      l'aéré au compact.
 +Prends en compte la lisibilité.
 +Les cas particuliers ne le sont jamais assez pour violer les règles.
 +Mais, à la pureté, privilégie l'aspect pratique.
 +Ne passe pas les erreurs sous silence,
 +... ou bâillonne-les explicitement.
 +Face à l'ambiguïté, à deviner ne te laisse pas aller.
 +Sache qu'il ne devrait y avoir qu'une et une seule façon de procéder,
 +même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais.
 +Mieux vaut maintenant que jamais.
 +Cependant jamais est souvent mieux qu'immédiatement.
 +Si l'implémentation s'explique difficilement, c'est une mauvaise idée.
 +Si l'implémentation s'explique aisément, c'est peut-être une bonne idée.
 +Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça. </code>
 +====PEP8=====
 +
 +  * **[[https://realpython.com/python-pep8/|realpython.com pep8]]** les choses importantes, après avoir bien mémorisé **[[https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements|les règles sur les espaces]]**.
 +
 +
 +**Avec python, nous sommes toujours entre adultes responsables.**
 +  * C'est toujours possible d’enfreindre une règle.
 +  * Par contre, certaines règles sont obligatoires: endentation, espaces ...
 +  * [[https://fr.wikipedia.org/wiki/John_Emerich_Edward_Dalberg-Acton|Lord Acton aurait pu dire: "Les choses cachées ne le sont jamais absolument."]]
 +
 +
 +=====Recherche web=====
 +Dans un moteur de recherche, toujours en anglais, par exemple:
 +  python3 download web page
 +
 +Une grande majorité des réponses sera sur **[[https://stackoverflow.com/questions/7243750/download-file-from-web-in-python-3|stackoverflow.com]]**
  
-=====Pass===== 
  
-{{tag>atelier}} +{{tag> atelier_python python sb }}
-{{tag>python}}+
initiation_a_python.1530711403.txt.gz · Dernière modification : 2018/07/04 13:36 de serge