IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Paramètres de fonctions: nouvelle syntaxe (utilisé ? pas uilisé ?)


Sujet :

Python

  1. #1
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut Paramètres de fonctions: nouvelle syntaxe (utilisé ? pas uilisé ?)
    Bonjour à tous

    Je viens de découvrir que Python3 s'était enrichi d'une nouvelle syntaxe concernant les paramètres de fonctions: on peut leur rajouter le typage.

    Par exemple en old syntaxe, une fonction s'écrira ainsi
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def isPrime(n=1):
    	if n == 1: return False
    	if n == 2: return True
    	for i in range(3, n, 2):
    		if (n%i) == 0: return False
    		if i > (n/i): return True
    # isPrime()

    En P3, on pourra l'écrire de la même façon ou bien de la façon suivante
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def isPrime(n :int=1) -> bool:
    	if n == 1: return False
    	if n == 2: return True
    	for i in range(3, n, 2):
    		if (n%i) == 0: return False
    		if i > (n/i): return True
    # isPrime()

    Alors déjà le typage n'engage à rien (la fonction indique qu'elle attend un int mais je peux lui passer une string sans que Python bronche). Mais j'aurais aimé avoir vos avis savoir ceux qui le mettent en pratique ou pas et les avantages que vous en retirez. Parce que mine de rien, c'est quand-même lourd à appliquer. Donc est-ce que ça vaut le coup ?

    Merci à tous.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ces annotations sont purement gratuites, c'est-à-dire qu'elles n'engagent que celui qui les utilise.

    Elles n'ont d'utilité que pour certains programmes d'analyse de code. Essentiellement le logiciel mipy. Les autres tel que pylint s'adapteront peut-être.

    L'introduction de ces annotations a fait l'objet d'un débat particulièrement houleux au sein des core devs de Python.

    Sans qu'il ne l'aie dit explicitement, ce débat fut celui qui conduit Guido van Rossum à céder son pouvoir décisionnel aux mêmes core devs.

    Personnellement, je trouve ces annotations très laides. Il s'agit là d'esthétique bien sur.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Merci de ta réponse.
    Perso je pensais que c'était une espèce d'aide à l'écriture de code propre dans la programmation en équipe et à l'évolutivité (on voit rapidement ce qu'attend la fonction et ce qu'elle renvoie).

    Question esthétique c'est évidemment subjectif. Pour l'instant j'ai aussi un peu de mal (j'ai passé mes quelques sources P3 dans cette syntaxe puis je les ouvre voir l'effet que ça me fait) mais peut-être qu'on peut s'y habituer.

    En attendant les autres avis, merci à toi
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ce qui serait malin avec ce genre de choses, c'est de pouvoir activer au choix un mode stricte qui déclencherait une exception lorsque le type n'est pas respecté (est-ce que ça existe?). Je ne suis pas étonné que cette "fonctionnalité" ait déclenché des débats houleux dans la mesure où l'on touche à l'identité même du langage (son coté simple, direct, sans fioritures).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J’apprécie la "souplesse" de Python, mais j'aurais aimé qu'il y ait une option possible de contrôle de type. Actuellement, à part pour faire de l'analyse de code statique comme le fait "mypy" (http://www.mypy-lang.org/), je ne vois pas l'intérêt de la nouvelle syntaxe puisqu'elle est complètement ignorée pendant l'exécution.

    Cela m'a obligé à créer un décorateur qui fait du contrôle de type quand j'en ai besoin, comme je l'ai dit ici: https://www.developpez.net/forums/d1.../#post10803205.

    C'est d'autant plus dommage que dans le cas de Cython, il faut ajouter les déclarations de types, mais avec une autre syntaxe, pour pouvoir compiler en C ou C++.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Hello,

    Citation Envoyé par Sve@r Voir le message
    Mais j'aurais aimé avoir vos avis savoir ceux qui le mettent en pratique ou pas et les avantages que vous en retirez.
    Je l'ai déjà utilisé et comme toi je trouve cette syntaxe lourde à appliquer. Perso, je n'en ai retiré aucun avantage ayant pas mal d'expériences dans ce langage, je m'explique...

    Avantages:


    1. Un débutant a tout intérêt à utiliser cette syntaxe sur des moyens et gros projets, ça lui évitera pas mal de bugs et l'obligera à organiser son code tout en contrôlant les types des arguments et de retour de fonctions.


    Toi expérimenté, déjà tu t'organises préalablement au code, tu maîtrises les types, et fait tes contrôles de types quand nécessaire, tu utiliseras la force du duck typing en rendant tes fonctions plus flexibles sans risques car tu sais ce que tu fais. Ça reste là encore une discussion sur les responsabilités données aux développeurs python.

    Inconvénients:


    1. La maturité de cette syntaxe commence qu'à partir de la version 3.6, moi par exemple je suis encore à la version 3.5, version actuelle sur ma debian.
    2. Je m'attendais à une optimisation des performances du langage, il en est rien ! En gros c'est du duck typing déguisé, avec des types vérifiés dynamiquement.
    3. Le temps de développement plus long, tout cela pour dire qu'il y a une erreur de type, qui sera aussi renvoyé de la même manière par ton interpréteur
    4. La vérification de type n'est pas la philosophie du langage, on préconise le try - except (duck typing). On peut parfois passer par isinstance, mais avec parcimonie.


    Conclusion:

    Je garde une veille technologique sur les différentes PEP concernant les annotations de type pour voir ce qui va en découler, surtout la partie performance...
    Pour le reste, je prend la responsabilité de continuer à suivre la philosophie pour laquelle j'ai choisi ce langage.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Perso je pensais que c'était une espèce d'aide à l'écriture de code propre dans la programmation en équipe et à l'évolutivité (on voit rapidement ce qu'attend la fonction et ce qu'elle renvoie).
    C'est ainsi qu'il faut le voir avec en plus:
    • une documentation "explicite" du type des paramètres,
    • moins de cas de tests,
    • un peu moins de code pour vérifier les types.

    Je comprends le besoin de cela dans le cadre de gros projets et éventuellement comme aide à la maintenance et à l'évolution d'applications mais çà ne correspond pas à mon utilisation de Python (donc je ne m'en sers pas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. template bon en paramètre de fonction mais pas en sortie
    Par goran kajfes dans le forum Langage
    Réponses: 10
    Dernier message: 02/06/2009, 23h54
  2. paramètre string fonction -> fonctionne pas toujours?!
    Par francoisvba dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 12/12/2008, 18h08
  3. appel de fonction qui ne marche pas : syntaxe?
    Par adoptioninternationa dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2008, 11h07
  4. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 10h42
  5. Paramètre de fonction
    Par Reynald dans le forum Débuter
    Réponses: 6
    Dernier message: 05/01/2005, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo