{{tag>cours dev python fun-mooc}} ====== Python3: cours de l'Université Côte d'Azur ====== Le cours disponible est sur FUN MOOC, il s' intitule **"Python 3: des fondamentaux aux concepts avancés du langage"**. Il est proposé par l' **Inria** et l' **Université Côte d'Azur**. ===== Semaine 1: Introduction au MOOC et aux outils Python ===== * [[110_interpreteur_et_idle|Interpréteur et IDLE]] * [[120_variables_objets_typage_dynamique|Notions de variables, d'objets et typage dynamique]] * [[130_types_numeriques|Les types numériques]] ===== Semaine 2: Notions de base pour écrire son premier programme en Python ===== Cette séquence aborde les **chaînes de caractères** et des **listes**. Nous en profiterons d'ailleurs lorsque nous parlerons des chaînes de caractères, pour expliquer ce que sont les notions de codage, décodage, jeux de caractères et Unicode. Ce sont des notions fondamentales que vous devez maîtriser dès que vous manipulez des chaînes de caractères. Ensuite nous parlerons des objets séquences dont les chaînes de caractères et les listes font d'ailleurs partie. Dans la deuxième partie de cette semaine, nous couvrirons un certain nombre de sujets très importants pour commencer à faire vos premiers programmes. Nous parlerons notamment de tests ''if else'', nous parlerons de compréhensions de liste, de fonctions et de modules. Également nous couvrirons la boucle ''for''. Nous ne ferons que des introductions très rapides ; notre objectif est de pouvoir vous permettre, dès cette section, de commencer à écrire de vrais petits programmes. * [[210_codage_jeux_caracteres|Codage, jeux de caractères et Unicode]] * [[220_chaines_de_caracteres|Les chaînes de caractères]] * [[230_sequences|Les séquences]] * [[240_listes|Les listes]] * [[250_introduction_test_if|Introduction aux tests if et à la syntaxe]] * [[260_introduction_boucles_fonctions|Introduction aux boucles for et aux fonctions]] * [[270_introduction_comprehension_de_listes|Introduction aux compréhensions de listes]] * [[280_introduction_aux_modules|Introduction aux modules]] ===== Semaine 3: Renforcement des notions de base, références partagées ===== Cette séquence aborde la gestion des fichiers et de nouveaux types built-in que sont les tuples, les dictionnaires et les sets. Nous introduirons également la gestion des erreurs avec les exceptions et nous parlerons d'un concept central en Python, le concept de références partagées. Pour finir, nous vous ferons une rapide introduction des classes pour vous montrer la puissance de Python et surtout que vous pouvez créer vos propres objets qui se manipulent exactement comme les types built-in. * [[310_fichiers|Les fichiers]] * [[320_tuples|Les tuples]] * [[330_tables_de_hash|Tables de hash]] * [[340_dictionnaires|Les dictionnaires]] * [[350_ensembles|Les ensembles]] * [[360_exceptions|Les exceptions]] * [[370_references_partagees|Les références partagées]] * [[380_introduction_aux_classes|Introduction aux classes]] ===== Semaine 4: Fonctions et portée des variables ===== Cette séquence introduit l'**instruction while**, nous allons revenir sur l'**instruction if**, mais le l'essentiel de la séquence portera sur les **fonctions**. Nous allons en particulier parler de la notion de **portée de variable** et nous allons voir comment modifier cette portée. Nous conclurons la séquence en étudiant comment définir les paramètres d'une fonction et les différentes manières d'appeler une fonction. * [[410_fontions|Fonctions]] * [[420_tests_et_operateurs_booleens|Tests if/elif/else et opérateurs booléens]] * [[430_boucle_while|Boucles while]] * [[440_portee_des_variables|Portée des variables - règle LEGB]] * [[450_modification_portee|Modification de la portée avec global et nonlocal]] * [[460_arguments_et_appel_de_fonction|Passage d'arguments et appel de fonctions]] ===== Semaine 5: Itération, importation et espace de nommage ===== Cette séquence aborde deux notions clés en Python: la **notion d'itérateur** et **d'espace de nommage**. Les **itérateurs** sont ce qui vous permet de parcourir les objets de manière simple et intuitive. Et les **espaces de nommage** vous permettent d'isoler les variables dans les objets tout en vous gardant la possibilité d'accéder aux attributs de n'importe quel objet avec une notation simple et explicite. * [[510_iteration|Itérable, itérateur, itération]] * [[[520_fonctions_lamda_map_filter|Objet fonction, fonction lambda, map et filter]] * [[530_comprehension_de_listes|Compréhension de listes, sets et dictionnaires]] * [[540_expressions|Expressions et fonctions génératrices]] * [[550_modules_espaces_de_nommage|Modules et espaces de nommage]] * [[560_importation_de_module|Processus d'importation des modules]] * [[570_importation_module_et_espaces_nommage|Importation des modules et espaces de nommage]] * [[580_package|Notion de package]] ===== Semaine 6: Conception des classes ===== La programmation objet est un paradigme de programmation qui est puissant et souple, mais qui vient au prix d'un effort de conception supplémentaire. Cependant, comme en Python tout est un objet, vous pouvez très rapidement tirer pleinement parti de ce paradigme de programmation. Avant de pouvoir le maîtriser, il faut connaître un certain nombre de notions comme la notion de **classe**, d'**instance**, de **méthode**, la notion de **méthode spéciale** et la notion d'**héritage**. Dans cette séquence, nous allons couvrir ces différentes notions. Nous expliquerons comment, en exploitant ce paradigme de programmation objet, vous pouvez créer vos propres **itérateurs**, vos propres **exceptions** et également vos propres **context managers**. * [[610_classe_instance_methode|Classes, instances et méthodes]] * [[620_methode_speciale|Méthodes spéciales]] * [[630_heritage|Héritage]] * [[640_heritage_multiple_resolution_des_attributs|Héritage multiple et ordre de résolution des attributs]] * [[650_variable_et_attribut|Variables et attributs]] * [[660_creation_iterateur|Conception d'itérateurs]] * [[670_creation_exception|Conception d'exceptions personnalisées]] * [[680_creation_context_manager|Conception de context manager]] ===== Semaine 7: Écosystème data science Python ===== Dans cette séquence, nous introduisons l'écosystème *data science* en Python, qui est un écosystème en pleine effervescence et extrêmement actif. D'ailleurs, cet écosystème contribue très largement au succès de cette discipline. * Présentation générale * Numpy: le type ndarray * Numpy: slicing, reshaping et indexation avancée * Numpy: vectorisation * Numpy: broadcasting * Pandas: introduction aux series et aux index * Pandas: le type DataFrame * Pandas: opérations avancées * Pandas: gestion des dates et des séries temporelles * matplotlib ===== Semaine 8: Programmation asynchrone avec asyncio ===== Cette séquence aborde la **programmation asynchrone**. C'est un sujet qui est assez innovant puisque ça met en œuvre un paradigme de programmation qui est plutôt différent de ce à quoi on est habitué. C'est aussi un sujet qui devient de plus en plus prégnant puisque dans un monde qui est tourné complètement vers le réseau. Ce sont des types d'applications qui deviennent de plus en plus largement utilisées, et pour ceux qui connaissent, vous trouverez des similitudes avec ce qu'on peut trouver dans des langages comme C# et JavaScript, enfin toute une famille de langages. * Programmation asynchrone * Quelques exemples simples * asyncio: historique et écosystème * Extensions asynchrones du langage * Coroutines et awaitables * Boucles d'événements * Tâches et exceptions * La librairie asyncio * Bonnes pratiques ===== Semaine 9: Sujets avancés ===== Nous abordons dans cette dernière séquence quelques sujets avancés. Notre but n'est pas de vous faire une couverture exhaustive de ces sujets ; il nous faudrait pour cela un nouveau MOOC, mais de vous les faire découvrir, pour que vous puissiez ainsi les développer vous-même, et ainsi, améliorer votre panorama de techniques de programmation. * Méthodes statiques et de classe * Les décorateurs * Les clôtures de fonctions * Les métaclasses * property et descripteurs * Protocole d'accès aux attributs