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 :

[noob] global name not defined


Sujet :

Python

  1. #1
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut [noob] global name not defined
    Bonjour,

    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/env python
    #-*- coding:utf8 -*-
    from timeit import Timer
     
    def xn_naif(x,n):
        res=1.
        i=n
        while i != 0:
            res *= x
            i -= 1
        return res
     
    print "resultat = ",xn_naif(2,2)
    t0 = Timer('xn_naif(2,2)').timeit(10000000)
    me renvoie l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    resultat =  4.0
    Traceback (most recent call last):
      File "./essai.py", line 27, in ?
        t0 = Timer('xn_naif(2,2)').timeit(10000000)
      File "/usr/lib64/python2.4/timeit.py", line 161, in timeit
        timing = self.inner(it, self.timer)
      File "<timeit-src>", line 6, in inner
    NameError: global name 'xn_naif' is not defined
    Lorsque j'apelle la fonction xn_naif dans le print ça fonctionne, mais l'appel dans le Timer plante... Pourquoi?
    Je pense qu'il faudrait définir xn_naif dans le Timer, mais n'y a-t-il pas une manière de faire comprendre à l'interpreteur que xn_naif est déjà définie?

  2. #2
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    en regardant la doc de timeit ( http://docs.python.org/2/library/timeit.html ) on trouve cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def test():
        """Stupid test function"""
        L = []
        for i in range(100):
            L.append(i)
     
    if __name__ == '__main__':
        import timeit
        print(timeit.timeit("test()", setup="from __main__ import test"))
    Il semble te manque l'import de ta fonction dans le timeit. Qui se fait ici avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setup="from __main__ import test"

  3. #3
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut
    merci

  4. #4
    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
    Ça doit forcément fonctionner avec Timer, selon la doc, j'aurais proposé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t0 = Timer('xn_naif(2,2)', 'from __main__ import xn_naif')
    print t0.timeit(10000000)
    Bonne continuation...
    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)

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

Discussions similaires

  1. [Python 2.X] Probleme de Global name not defined
    Par Sh0rtY dans le forum Général Python
    Réponses: 1
    Dernier message: 03/07/2014, 10h47
  2. Global name is not define?
    Par Enzymus dans le forum Général Python
    Réponses: 7
    Dernier message: 16/08/2011, 20h04
  3. NameError: global name 'thread' is not defined
    Par Balbuzard dans le forum Général Python
    Réponses: 6
    Dernier message: 15/07/2009, 06h52
  4. références croisées objets NameError: global name is not defined
    Par loicmidy dans le forum Général Python
    Réponses: 2
    Dernier message: 13/06/2009, 15h41
  5. NameError: global name 'entr2' is not defined
    Par noquioz dans le forum Tkinter
    Réponses: 18
    Dernier message: 24/11/2008, 11h20

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