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 :

[Débutant] Besoin d'aide pour un exercice


Sujet :

Python

  1. #21
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Une des bases de la programmation modulaire, c'est que deux appels différents à une même fonction avec les mêmes paramètres doivent donner deux fois le même résultat.
    hu? ça, c'est la définition d'une "pure function"... mais on peut faire de la programmation "modulaire" sans que toutes ses fonctions soient "pures".

    Et le problème ici vient plutôt du fait qu'avec Python, les fonctions sont des objets comme les autres... et que si on veut écrire des fonctions pures, c'est pas toujours aussi simple.

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

  2. #22
    Invité
    Invité(e)
    Par défaut
    @Wiz Ouai j'ai pas le réflexe d'utiliser range... D'ailleurs itertools.repeat("",10000) c'est plus mieux ou plus pire ou plus inutile ? (dans ce cas de figure)

    @Sve@r Merci pour ces explications et corrections !
    Effectivement j'ai pas pensé au faite que l'argument devienne global, c'est ça ? (Non c'est pas ça ^^)
    Juste par curiosité les arguments sont stockés dans le tuple __defaults__ ?
    Du coup si je devais caricaturer pour comprendre, c'est un peu comme si la fonction def f(n,tab=[]): tab.append(n) devenait une classe ? Avec f.tab = [] et donc à chaque fois qu'on appelle la fonction on ajoute n à f.tab ?



    Et puis j'aurais même pu encore gagné une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	liste.append(random.randint(0,2))
    	moy = sum(liste)/len(liste)


    Le module inspect oui merki !



    @Hominidé
    Génial ! Je me demandais s'il y avait un moyen de faire les deux opérations en une !
    Une info que je vais très probablement oublier malheureusement.
    Dernière modification par Invité ; 25/08/2021 à 21h47.

  3. #23
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    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 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Juste par curiosité les arguments sont stockés dans le tuple __defaults__ ?
    Exact (ainsi que dans __kwdefaults__ si des arguments sont placés après *args comme c'est autorisé depuis P3)

    Citation Envoyé par LeNarvalo Voir le message
    Du coup si je devais caricaturer pour comprendre, c'est un peu comme si la fonction def f(n,tab=[]): tab.append(n) devenait une classe ? Avec f.tab = [] et donc à chaque fois qu'on appelle la fonction on ajoute n à f.tab ?
    Ben en fait une fonction est déjà une classe !!! Et comme telle peut même avoir des attributs
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> def toto(n):
    ...     toto.tab.append(n)
    ...     print(toto.tab)
    ... 
    >>> toto.tab=[]
    >>> toto(1)
    [1]
    >>> toto(2)
    [1, 2]
    >>> toto(3)
    [1, 2, 3]
    Dans cet exemple le tableau est créé une fois puis rempli par les appels de la fonction. Avec les arguments par défaut, il est créé avec la fonction (justement dans __defaults__ dont tu parles) puis aussi rempli par les appels.

    Citation Envoyé par LeNarvalo Voir le message
    Une info que je vais très probablement oublier malheureusement.
    Tu ne l'oublieras pas si tu as l'habitude du C. Dans ce langage il est assez courant d'affecter et tester en même temps le résultat => if ((tab=malloc(...)) != NULL). Les développeurs de Python ont donc voulu offrir la même possibilité. Sinon t'as qu'à penser à "opérateur morse" (nommé ainsi du fait de la ressemblance de cet opérateur avec l'animal avec := étant les yeux et les dents) et tu le retrouveras immédiatement dans tous les tutos récents.
    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. #24
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Ben en fait une fonction est déjà une classe !!!
    Une fonction est un objet... un objet peu avoir un état (qui se matérialise éventuellement par des attributs).

    Mais tout objet n'est pas "class" (est-ce qu'on peut hériter d'une fonction?).

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

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    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 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    (est-ce qu'on peut hériter d'une fonction?).
    Ah oui, en effet c'est un bon argument. Ok je ne ferai plus la confusion entre "objet" et "classe"
    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]

Discussions similaires

  1. Besoin d'aide pour un exercice de cours (débutant)
    Par GetZo34 dans le forum Général Python
    Réponses: 8
    Dernier message: 28/09/2017, 00h31
  2. [Débutant] Besoin d'aide pour un exercice
    Par bebetoalvaro dans le forum Pascal
    Réponses: 9
    Dernier message: 05/02/2007, 01h59
  3. [Débutant]Besoin d'aide pour gestion d'exceptions
    Par H1B4K dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 10h01
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  5. [débutant].besoin d'aide pour servlet
    Par 2tsiris dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 30/03/2006, 14h36

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