appel direct de fonction refusé !
Je travaille toujours dans IDLE sous Windows XP et avec le même fichier d'essais _essai.py.
Je suis débutant en Python (version 2.6.4).
Je connais l'utilisation du module math dans le cadre d'un import :
par exemple :
from math import sqrt
racine = math.sqrt(3)
print racine
répond bien (après sauvegarde et appui sur la touche F5):
>>>
1.73205080757
>>>
En revanche, l'appel direct (sans import préalable) est refusé :
Si j'écris dans mon script :
racine = math.sqrt(3)
j'obtiens alors le message (toujours dans IDLE sous Windows XP) :
>>>
racine = math.sqrt(3)
NameError: name 'math' is not defined
>>>
Il en est de même pour tout autre module ; si j'écris par exemple, sans importer le module sys :
sys.exit()
J'obtiens le même type de refus :
>>>
sys.exit()
NameError: name 'sys' is not defined
>>>
Voilà à toute fin utile ce que j'obtiens si j'écris :
from sys import *
print path
résultat :
>>>
['E:\\GP\\Technique\\Python', 'C:\\Python26\\Lib\\idlelib', 'C:\\Python26', 'C:\\WINDOWS.0\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26\\lib\\site-packages']
>>>
Quelqu'un peut-il me dire ce que je n'ai pas compris ?
ce que je crois avoir compris
Bonjour
Tout d'abord un grand merci à vous trois : wiztricks, valAa et eyquem
Ma confusion venait du fait que j'ai mal interprété l'exemple de la page 262 de l'excellent cours téléchargeable de Gérard Swinnen où l'on trouve (paragraphe 16.3.4 ligne 6 du script - programme principal) une instruction sys.exit() non précédée d'un import sys.
Voici, en résumé, ce que je crois avoir compris de vos explications :
Je prends toujours l'exemple du calcul de la racine carrée de 3.
Méthode 1 :
Code:
1 2
| from math import *
print sqrt(3) |
Méthode 2 :
Code:
1 2
| from math import sqrt
print sqrt(3) |
Méthode 3 :
Code:
1 2
| import math
print math.sqrt(3) |
Ces trois méthodes fonctionnent, mais elles ne présentent pas les mêmes avantages et inconvénients :
- la méthode 1 est syntaxiquement la plus légère mais c'est la plus consommatrice de ressources
- la méthode 2 est syntaxiquement un peu plus lourde mais elle consomme peu de ressources (elle n'utilise du module math que la fonction sqrt) ; on peut d'ailleurs importer dans une seule même instruction plusieurs fonctions :
par exemple :
Code:
from math import sqrt, atan2
- la méthode 3 est syntaxiquement la plus lourde mais elle consomme un minimum de ressources et, en outre, elle seule permet d'éviter l'écueil de la confusion éventuelle entre 2 fonctions (ou procédures ou méthodes ou classes) de même nom mais appartenant à des modules importés (ou non) différents.
Par exemple cosh qui figure à la fois dans les modules math et cmath, comme je le découvre en parcourant la précieuse page de ce site :
http://python.developpez.com/cours/d...nindex-all.php
Est-ce bien cela ?
Papy_77