Rédaction d'une collection de tutoriels Python

Qui ? Quoi ? Comment ?

a marqué ce sujet comme résolu.

À propos des design patterns je pense qu'il faut être prudent : Python étant beaucoup plus souple que Java et C++, de nombreux patterns (pensés pour ces langages) sont complètement overkill. Je pense en revanche qu'une partie design (bonnes habitudes, quelques exemples de designs courants etc.) serait une vraie valeur ajoutée.

Sinon mon tuto sur les notions de base stagne depuis un moment, mais puisqu'on en a déjà un publié et dont les auteurs sont actifs, ça n'est pas très grave. En ce moment j'ai trop peu de temps à consacrer à ce tuto pour qu'on puisse miser dessus. Je pense en revanche que me concentrer sur le tuto de programmation système serait un bon moyen de démarquer zds avec un tuto sur un thème (pourtant très important) qu'on ne trouve nulle part ailleurs.

+4 -0

Je suis également pour mais je manque un peu de temps en ce moment. Je veux bien t'assister dans la rédaction (relecture approfondie et ajout si nécessaire).

+0 -0

Que diriez-vous d'un tutoriel sur les modules en Python ? On aurait deux parties :

  • Utiliser les modules :
    • Les bases de l'import (différentes syntaxes, ce qu'est un module, etc.) ;
    • Comment fonctionne l'import (la notion de PATH)
    • Installer un module (pip) ;
    • Les environnements virtuels.
  • Créer des modules :
    • Les bases de la modularité (__init__.py) ;
    • Bien moduler son application (il ne "faut" pas tout mettre dans un même fichier, certes, mais que faut-il faire alors ?) ;
    • setup.py ;
    • PyPi.

Comme d'habitude, je n'aurai pas le courage (ni les capacités) d'écrire ça moi-même, mais votre avis sur le plan m'intéresse tout de même.

+6 -0

Ce plan me semble tout à fait correct même si la partie que tu appelles setup.py (et que j'appellerais distutils) aurait vraiment une place prépondérante dans le second chapitre.

On peut imaginer ensuite enrichir le tuto avec des considérations sur le fait de freezer une application, créer des installeurs propres sous Windows avec innosetup, ou packager une appli sou Linux (deb, rpm…).

En tout cas il n'existe à ma connaissance aucun tutoriel vraiment complet sur le sujet en français.

+1 -0

laissez-moi quelques jours voir deux semaines et je vous fait une petite proposition d'introduction à la POO qui peut être utilisée pour tous les langages.

à partir de là, broder autour des super() et de la surcharge ça devrait aller.

artragis

Une introduction à la POO serait toujours bénéfique, mais je ne pense pas que les tutoriels sur les différents langages pourraient se contenter de la citer puis de montrer comment ça se passe dans le dit langage.

Il y a souvent pas mal de particularités dans chaque langage (qui ne se réduisent pas à super et à la surcharge :) ), et il me semble préférable de mêler les notions abstraites et leur implémentation tout le long du tutoriel.

À propos des design patterns je pense qu'il faut être prudent : Python étant beaucoup plus souple que Java et C++, de nombreux patterns (pensés pour ces langages) sont complètement overkill. Je pense en revanche qu'une partie design (bonnes habitudes, quelques exemples de designs courants etc.) serait une vraie valeur ajoutée.

nohar

C'est comme ça que je voyais les choses oui, n'avoir que des exemples/patterns adaptés à Python.

Que diriez-vous d'un tutoriel sur les modules en Python ? On aurait deux parties :

  • Utiliser les modules :
    • Les bases de l'import (différentes syntaxes, ce qu'est un module, etc.) ;
    • Comment fonctionne l'import (la notion de PATH)
    • Installer un module (pip) ;
    • Les environnements virtuels.
  • Créer des modules :
    • Les bases de la modularité (__init__.py) ;
    • Bien moduler son application (il ne "faut" pas tout mettre dans un même fichier, certes, mais que faut-il faire alors ?) ;
    • setup.py ;
    • PyPi.

Comme d'habitude, je n'aurai pas le courage (ni les capacités) d'écrire ça moi-même, mais votre avis sur le plan m'intéresse tout de même.

Vayel

Ça me semble être une bonne idée. Qu'est-ce qui serait inclus dans « Comment fonctionne l'import » ? Est-ce que ça contiendrait une présentation de l'importlib, de ModuleType, et du meta_path ?

Qu'est-ce qui serait inclus dans « Comment fonctionne l'import » ? Est-ce que ça contiendrait une présentation de l'importlib, de ModuleType, et du meta_path ?

entwanne

Je ne connais pas ce que tu mentionnes. J'avais personnellement pensé à ça.

+0 -0

Je ne connais pas ce que tu mentionnes. J'avais personnellement pensé à ça.

Vayel

Ah oui, je ne me souvenais plus de cet article, mais les commentaires me font dire que je l'ai déjà lu.

Je ne suis pas tellement partisan de l'utilisation d'__import__, car elle est assez complexe à appréhender et peux amener à des résultats déroutants. La documentation le dit d'elle même :

1
2
3
4
5
6
>>> help(__import__)
[...]
    Import a module. Because this function is meant for use by the Python
    interpreter and not for general use it is better to use
    importlib.import_module() to programmatically import a module.
[...]

importlib est ainsi un module de la bibliothèque standard pour réaliser des imports dynamiques en tant qu'utilisateur.

ModuleType est le type d'un module, c'est donc une classe qui permet d'instancier de nouveaux modules.

Enfin, sys.meta_path est quelque chose de semblable à sys.path, mais en plus dynamique : c'est à dire que chacun des finders/loaders présent dans le meta path* pourra se charger de résoudre l'import comme il le souhaite.

Je pense qu'il ne faut pas s'éparpiller pour la première publication. Le plan de Vayel semble aborder l'essentiel auquel tous les développeurs python sont confrontés un jour ou l'autre.

C'est à mon avis là-dessus qu'il faut mettre la priorité quitte à l'enrichir de nouvelles notions dans un second temps.

+2 -0

Puisque Nohar relance le sujet, j'en profite pour dire que je compte écrire un tuto « Python pour scientifique ». Ce n'était pas ma priorité jusqu'ici, mais le fait est que je suis dans un labo de mécanique, et qu'en moins de 6 mois, je suis devenu l'un des référents en programmation (on ne rit pas). L'autre référant passant en 3e année de thèse en septembre prochain, inutile de vous dire qui va devoir dire comment on utilise numpy à tous les nouveaux…

Aussi bien pour savoir quoi dire (la 1ère fois, ce n'est pas évident) que pour ne pas passer trois plombes à chaque fois (soyons honnêtes), je compte rédiger un moyen-tuto sur la programmation scientifique en python. Ce serait orienté traitement de donnée, numpy/scipy/matplotlib et petit scripts scientifiques (que les gens font d'habitude en matlab). Tout ce qui est Cython, optimisations ou qui se rapproche de l'orienté objet ne serait pas traité.

Dans l'idéal, ce serait fait d'ici octobre. Mais je ne tiens jamais mes délais.

Il faudra que je me cale avec les autres (coucou Karnaj) au moins pour les questions d'installation. Je n'ai pas du tout envie de pousser à passer par pip (je sais très bien que ça signifierait perdre 3/4 des lecteurs potentiels), je penche pour Anaconda (car c'est facile, multiplateforme, on a toutes les bibliothèques d'un coup, plus un IDE correcte, et le tout est libre) ou, sous linux, le gestionnaire de paquet.

Je reposterai ici quand j'aurais vraiment commencé. Mais si d'autres personnes comptes faire des tuto dans la même branche, je serai ravi qu'on s'accorde sur la procédure d’installation/l'environnement.

+9 -0

À ce propos, que sont devenues les différentes idées évoquées sur ce sujet ?

  • Le tutoriel sur le packaging a-t-il été débuté ?
  • Qui serait intéressé par la rédaction d'un cours assez complet sur l'objet en Python, qui ferait la liaison entre le cours d'introduction au langage et les cours plus avancés ?
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte