Apprendre le Python
Ici, on s’intéresse essentiellement aux notions de bases: les différents types de variables, les fonctions usuelles.
Venant de php, j'ai deja les "principes" algorithmiques de base, je vais m’intéresser aux spécificités du langage.
Je prends des notes par apport au cour d'OpenClassRooms: Apprenez les bases du langage Python
En parallèle, je lis également le cour de laConsole: python - Syntaxe et Algorithmie. Le petit pense-bête est bien utile.
Le cour d'OpenClassRooms survole, voir omet des notions essentielles: typage statique, Environnement Virtuels. Sans doute dans un soucis d’accessibilité au débutant. Je trouve, le cour de laConsole, plus adapté à mon profil.
Enfin, la documentation officielle du language et son tutoriel qui permet de découvrir énormément de notions.
C'est pourquoi après la partie 1 et 2, je reprends les scripts en "typant" et en ajoutant une gestion des erreurs.
Principes de base
Quelques fonctions usuelles
print(): permet d'afficher du texte, une optionfest disponible pour faciliter l'affichage des variables. - voir le tutoriel officieltype(): permet d'afficher le type d'une variable (c'est "vague" pour un début).input("une question?"): permet de demander un input à l'utilisateurprint(f"{type(une_variable)}"): permet d'afficher le 'type' d'une variable
Les types variables
On retrouve ceux de bases, je ne vais m'attarder sur ces derniers.
A noter, qu'on a pas de distinction entre une variable et une constante.
La liste [] est un élément nouveau pour moi, j'ai tendance à la comparer au Tableau de php.
On dispose d'une série de fonctions pour "interagir" avec les listes:
.apprend(): ajouter un élément.remove(): retire un élément, on peut aussi passer par l'index viadellen(): connaître la longueur de la liste.sort(): permet de trier la listeextend(): permet d'ajouter des éléments à la finpop(): supprime l'élément indiquer ou le dernier élémentindex(): renvoie la première occurrence de l'élément spécifiécount(): permet de compter combien de fois on trouve un élément spécifiérevers(): permet d'inverser l'ordre des éléments
Aussi, on a les tuples, au lieu d'utiliser des [] on utilise des ().
Le principe est le même que les listes, sont que le tuples ne sont pas modifiable. Les tuples peuvent se concaténer entre eux.
On a également les dictionnaires, en php l'équivalant serait les tableaux scalaires. C'est un ensemble de clé/valeur. Cela resemble un peu à un objet en JS. On les créer via {}
Tout comme les lists, pour les dictionnaires on dispose de fonctions:
.keys(): retourne une vue sur les clés du dico. (pas encore vu l'utilité pour l'instant).values(): retourne une vue sur les valeurs du dico. (pas encore vu l'utilité pour l'instant).items(): retourne une vue sur les couples (clé, valeur) du dico. (pas encore vu l'utilité pour l'instant).keys(): retourne une vue sur les clés du dico. (pas encore vu l'utilité pour l'instant).get(): permet de connaître la valeur d'une clé.pop(): supprime la clé spécifié ou none si clé non trouvée.clear(): supprime tous les éléments
Le typage statique
Les différents types:
- int
- float
- bool
- str
- bytes
- .les collections.
- x: list[_indiquer_un_type_]
- x: set[_indiquer_un_type_]
- x: dict[str, float] = {...} (ceci est un exemple)
- x: tuple[int, str, float] = (3, "yes", 7.5)
- ...
- none
- not none
Il existe des types "avancés", ces derniers nécessite l'import du module typing. A voir, par la suite.
Le gestionnaire de dépendance
Contrairement à PHP, Python possède un gestionnaire de dépendances natif: pip.
Afin de mieux gérer les dépendances de chaque projet, on va utiliser des environnements virtuels.
Cela permet une isolation (évite les conflits de versions) et une portabilité du projet.
Cet environnement se créer via la commande: python -m venv _nom_de_l_environnement_auquel_on_ajoute_env
Exemple: py -m venv dev_tssr_env
Pour supprimer un environnement virtuel supprimer son dossier.
Une fois l'environnement créé, il faut l'activer: nom_env\scripts\activate (pour windows). Pour linux/macOS: source mon_env/bin/active
Pour le désactiver: deactivate
Remarque: concernant le versioning, le répertoire d'environnement virtuel sera ignoré. On créera un fichier requirements.txt qui contiendra la liste des dépendances du projet.
Cela peut se faire via pip freeze > requirements.txt
Pour installer les dépendances il suffit alors de faire: pip install -r requirements.txt
Pour afficher la liste des packages installés: pip freeze
Le slicing
Via l'IA, j'ai découvert un exemple de slicing. Tout comme en php, les caractères d'une chaîne sont accessible par index, comme dans un tableau.
Ici, Python propose du Slicing, cela permet d'extraire une partie d'une chaîne, d'une liste, tuple et autres.
sequence[start:stop:step]
start: l'indice de début de la tranche (inclus). Si omis, le slicing commence au début de la séquence.stop: l'indice de fin de la tranche (exclus). Si omis, le slicing se termine à la fin de la séquence.step: le pas entre chaque élément de la tranche. Si omis, le pas est de 1.
Points clés:
- Indices négatifs: Vous pouvez utiliser des indices négatifs pour compter à partir de la fin de la séquence.
- Omission des indices: Si vous omettez start, stop, ou step, Python utilise des valeurs par défaut.
- Pas négatif: Un pas négatif permet d'inverser la séquence.
Quelques remarques perso:
- De base pas de
var_dump, faut l'implémenter - Pas d'opérateur
++, pour incrémenter une variable de 1:var+=1 - L'indentation est obligatoire, la lecture du code est plus "légère", mais je trouve que c'est plus "austère"
- La philosophie du python: Zen de Python
- Le
matchest l'équivalant du switch de PHP - Le
dictionnairesemble être équivalant au tableau scalaire de php - Pas d'auto-loading comme en php, mais des
import - Pas de foreach comme en php, mais une boucle
forassez "sexy" de base avecin range() - Contrairement à php, il semble que Python les guillemets simple ou double soient traitées de manière équivalente en terme d'optimisation.
- Pour quitter un script on peut utiliser
exit()ousys.exit()(il faut importersys) - Le module mypy, indique qu'il ne faut pas nommé une variable du même nom qu'une fonction.
J'ai terminé ce cour, j'ai passé plus de temps, car je suis allé au delà du cour, découverte de l'environnement virtual et du typage.
J'ai hâte de découvrir la syntaxe pour l'orienté objet. Et pourquoi pas ensuite découvrir le Framework Django
Remarque: la prise de note ici est minimaliste, j'utilise surtout le pense-bête de laConsole.