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 :

Question relative aux python-types dans les paramètres


Sujet :

Python

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut Question relative aux python-types dans les paramètres
    Bonjour


    Utilisant FastApi, je dois utiliser les "python-types" https://fastapi.tiangolo.com/python-types/

    Cela fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def function(request: Request):
        return templates.TemplateResponse('archived_projects.html', context={'request': request} )
    Oui mais voila, je ne sais pas créer une fonction qui a un paramètre non typé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def function(request: Request, second_parametre_non_type):
        return templates.TemplateResponse('archived_projects.html', context={'request': request} )
    J'ai une erreur étrange du style
    return templates.TemplateResponse('project.html', context={'request': request} )
    IndexError: tuple index out of range
    Bref est-il possible de mixer les 2 types de paramètres : normaux et "python-types" ?
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Bayard Voir le message
    Cela fonctionne bien.
    Oui mais Python ne fait aucun contrôle entre le type prévu et le type réellement passé. Peut-être que cela se fera dans une version future mais pour l'instant, tu peux très bien passer une string dans un paramètre indiquant attendre un int, no problem. Cela semble plus destiné à aider à la lecture qu'un vrai contrôle.
    Accessoirement cette notation n'est pas seulement réservée aux paramètres mais peut aussi être appliquée à toute variable => i:int=123.

    Citation Envoyé par Bayard Voir le message
    Oui mais voila, je ne sais pas créer une fonction qui a un paramètre non typé
    Tout paramètre est toujours forcément typé. Ce que tu veux, c'est pouvoir recevoir n'importe quel type => def f(param:any).

    Citation Envoyé par Bayard Voir le message
    Bref est-il possible de mixer les 2 types de paramètres : normaux et "python-types" ?
    Oui aussi => def f(a:int, b, c:str)
    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]

  3. #3
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 471
    Points : 6 110
    Points
    6 110
    Par défaut
    Bonjour,

    Citation Envoyé par Sve@r Voir le message
    Oui mais Python ne fait aucun contrôle entre le type prévu et le type réellement passé. Peut-être que cela se fera dans une version future mais pour l'instant, tu peux très bien passer une string dans un paramètre indiquant attendre un int, no problem. Cela semble plus destiné à aider à la lecture qu'un vrai contrôle.
    Attention, Bayard parle de FastAPI qui utilise pydantic qui fait bien du contrôle à l'exécution en fonction des annotations de type.

    Mais je ne peux pas en dire plus. J'ai découvert l'existence de FastAPI et de pydantic hier soir, en lisant le fil présent.

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Merci Pyramidev

    C'est une erreur liée à FastApi.

    Mais cela m'a fait plaisir de comprendre que, sans FastApi, c'est de la déco.
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question optionnal dans les paramètres d'une fonction
    Par bsangoku dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/01/2013, 14h20
  2. Réponses: 2
    Dernier message: 02/12/2006, 21h58
  3. [Question] J'aimerais me lancé dans les jeux .....
    Par MegaBigBoss dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 16/05/2006, 13h25
  4. passer un & dans les paramètres de la page
    Par see++ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/03/2006, 15h48
  5. question idiote sur terme utilisé dans les offres
    Par coyott dans le forum Emploi
    Réponses: 4
    Dernier message: 24/08/2005, 17h16

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