ajout des imports et de sys.modules

This commit is contained in:
gwen 2015-05-05 15:00:47 +02:00 committed by Benjamin Bohard
parent 8ea173ab17
commit 8a8d2c1d52
3 changed files with 49 additions and 3 deletions

View File

@ -3,7 +3,7 @@ Apprentissage de la programmation avec python
---------------------------------------------- ----------------------------------------------
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 2
getting-started getting-started
settings settings
@ -16,7 +16,7 @@ Programmation python, connaissances de base
-------------------------------------------- --------------------------------------------
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 2
classes classes
prompt prompt

View File

@ -6,6 +6,8 @@ Programmation python courante
les espaces de nommage les espaces de nommage
----------------------- -----------------------
L'espace de nommage le plus courant est l'organisation en modules et en packages.
Packages et modules:: Packages et modules::
package/ package/
@ -56,6 +58,50 @@ Organisation modulaire
- identifier les sous-composants indépendants (rendre les programmes réutilisables) - identifier les sous-composants indépendants (rendre les programmes réutilisables)
- forcer l'abstraction (augmenter la sureté du programme) - forcer l'abstraction (augmenter la sureté du programme)
modules chargés et modules importés
--------------------------------------
Les modules susceptibles d'être chargés sont dans le :envvar:`PYTHNONPATH`.
Mais comment peut-on savoir ou ils sont physiquement (sur le disque dur) ?
.. envvar:: `sys.modules`
>>> 'twisted' in sys.modules
False
>>> import twisted
>>> 'twisted' in sys.modules
True
>>> sys.modules['twisted']
<module 'twisted' from '/usr/lib/python2.7/dist-packages/twisted/__init__.pyc'>
>>>
.. attention:: un module présent dans `sys.modules` n'est pas forcément importé
dans l'espace de nommage usuel. Il faut importer le module pour
pouvoir l'utiliser.
>>> sys.modules['email']
<module 'email' from '/usr/lib/python2.7/email/__init__.pyc'>
>>> dir(email)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'email' is not defined
>>>
Connaître la version d'un module
-------------------------------------
Exemple : le module ``datetime``
C'est suivant la version de python car c'est la librairie standard.
Sinon, en général il y a un attribut __version__
>>> import sqlalchemy
>>> sqlalchemy.__version__
'0.9.8'
>>>
Les méthodes spéciales Les méthodes spéciales
----------------------- -----------------------

View File

@ -173,7 +173,7 @@ ordinal not in range(128)
<type 'str'> <type 'str'>
>>> >>>
# il faut utiliser .encode(), et pas .decode()... Il faut utiliser ``.encode()``, et pas ``.decode()``::
if type(s) == unicode #types.UnicodeType: if type(s) == unicode #types.UnicodeType:
bla bla bla bla