A Byte of Python

Chapter 8. Mòduls

Table of Contents

Introducció
Fent servir el mòdul sys
Fitxers pre-compilats .pyc
La instrucció from..import
El nom d'un mòdul
Fent servir el nom del mòdul
Desenvolupant els nostres propis mòduls
Desenvolupant els nostres propis mòduls
from..import
La funció dir()
Ús de la funció dir
Resum

Introducció

Fins ara hem vist que podem reusar codi als nostres programes mitjançant funcions. Però, què passa si volem tornar a fer servir a altres programes les funcions que hem definit? La resposta està en els mòduls. Un mòdul és bàsicament un fitxer que conté la definició de funcions i variables. Per a reusar-les a altres programes, el nom del fitxer que conté el mòdul necessàriament ha de tenir l'extensió .py.

Un mòdul pot ser importat per un altre programa de manera que aquest programa pugui accedir a les funcionalitats que defineix el mòdul. Així és com fem servir la biblioteca estàndard de Python. Primer de tot, veiem com usar els mòduls de la biblioteca estàndard.

Fent servir el mòdul sys

Example 8.1. Fent servir el mòdul sys

				
#!/usr/bin/python
# Filename: using_sys.py

import sys

print 'Els arguments de la línia de comandes són:'
for i in sys.argv:
	print i

print '\n\nEl valor de PYTHONPATH és', sys.path, '\n'
				
				

Sortida

				
$ python using_sys.py  nosaltres som arguments
Els arguments de la línia de comandes són:
using_sys.py
nosaltres
som
arguments


El valor de PYTHONPATH és ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
				
				

Com funciona

Primer de tot, importem el mòdul sys fent servir l’expressió import. D’aquesta manera diem al Python que volem fer servir aquest mòdul. El mòdul sys conté funcionalitat relacionada amb l’interpret de Python i amb el seu entorn.

Quan Python executa la instrucció import sys el que fa és cercar el fitxer sys.py a algun dels directoris inclosos a la variable sys.path. En cas de trobar el fitxer, s’executa les instruccions que apareguin al bloc principal del mòdul importat i, a partir d’aquest moment el contingut del mòdul resta disponible per ser usat des del programa que l’importa. Tinguem present que la inicialització es realitza una única vegada en el moment que importem el mòdul. Per cert, 'sys' és una abreviació de 'system'.

Podem accedir a la variable argv del mòdul sys fent servir la notació amb punt - sys.argv. Un dels avantatges d’aquesta notació és que el nom no colisiona amb cap altra variable argv que pugui fer servir el programa, a l’hora que indica clarament que aquest nom forma part del mòdul sys.

La variable sys.argv és una llista de strings (les llistes s’expliquen en detall en una propera secció). En concret, sys.argv conté la llista dels arguments de la línia de comanda, és a dir, els arguments passats al programa quan és cridat des de la línia de comanda.

Si estem fent servir un IDE per a escriure i executar els nostres programes, haurem de cercar com especificar els arguments de línia de comanda entre les opcions del menú de l’entorn integrat.

Quan escrivim python using_sys.py nosaltres som arguments, s’executa el mòdul using_sys.py amb el programa python i, la resta d’elements que apareixen a continuació, són els arguments que passem al programa. Python emmagatzema aquests arguments a la variable sys.argv.

Recordem que el primer dels elements de la llista sys.argv és el nom del mòdul. Així tindrem que 'using_sys.py' és el valor de sys.argv[0], 'nosaltres' correspon a sys.argv[1], 'som' és sys.argv[2] i finalment 'arguments' és sys.argv[3]. Fixem-nos que Python comença a comptar a partir de 0, no des de 1.

sys.path conté la llista de noms de directori on es poden trobar els mòduls importats. Observem que el primer string de sys.path està buit – aquest string buit indica que el directori actual també és part de sys.path. De la mateixa manera que passa amb la variable d’entorn PYTHONPATH. Això implica que podem importar directament mòduls situats en el directori actual. En altre cas, haurem de col·locar els nostres mòduls en algun dels directoris llistats a sys.path.