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 12:39] – [Quelques commandes] 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===
 +<code python>
 +1
 +3.14
 +"Moi"
 +1+3.14
 +1+"toto"
 +1/2
 +</code>
  
 ===Variable=== ===Variable===
Ligne 41: 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>
  
-{{tag>atelier}} +=====Type de données===== 
-{{tag>python}}+<code python> 
 +1  # int  
 +3.14  # float  
 +"Labomedia"  # str  
 +[1, 2, 3]  # list 
 +{"1": "tot", "2": 1}  # dict 
 +</code> 
 + 
 +=====Fonction===== 
 +<code python> 
 +>>> type(1) 
 +<class 'int'> 
 +>>> print("Hello, World", end="!"
 +Hello, World! 
 +</code> 
 + 
 +=====Ouvrir Geany===== 
 +====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. 
 + 
 +<code python> 
 +a = 1 
 +b = 2 
 +c = 3.14 
 +d = "labo" 
 +e = "toto" 
 + 
 +r = a + b 
 +print(r) 
 + 
 +s = a - b 
 +print(s) 
 + 
 +t = a / b 
 +print(t) 
 + 
 +print(d + e) 
 + 
 +print(a + e) 
 + 
 +print(a+e) 
 + 
 +print(f"Je suis un f-string {t} ou encore {a+e} çà"
 +</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===== 
 +====si oui si non==== 
 +<code python> 
 +a = -6 
 + 
 +if a < 0: 
 +    print("bingo"
 +    print(""
 +    print("tu"
 +    print("as"
 +    print("gagné"
 +    print(""
 +    if a < -5: 
 +        print("2 ème niveau d'indentation"
 +else: 
 +    print("tu as perdu"
 +    print(type("tu as perdu")) 
 + 
 +print("je fais autre chose"
 + 
 +</code> 
 + 
 +**Indentation: Toujours utiliser la tabulations avec 4 espaces: quand lama fâché, lui toujours faire ainsi !** 
 +====Opérateur de comparaison==== 
 +  * https://docs.python.org/fr/3/reference/lexical_analysis.html#operators 
 +<code python> 
 +==    !=    <    >    <=    >= 
 +</code> 
 + 
 + 
 +=====Boucle===== 
 +**Table du 4** 
 +<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> 
 +i = 0 
 +while i >= 10: 
 +    print(str(i) + " x 4 =", i * 4) 
 +    i += 1 
 +</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===== 
 +====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. 
 + 
 +**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]] 
 + 
 +====Simple==== 
 +<code python> 
 +def ma_fonction(): 
 +    print("Demain"
 + 
 +def ta_fonction(a): 
 +    print(a) 
 + 
 +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===== 
 +<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]]** 
 + 
 + 
 +{{tag> atelier_python python sb }}
initiation_a_python.1530707948.txt.gz · Dernière modification : 2018/07/04 12:39 de serge