Si les paquets sont structurés en sous-paquets (comme le paquet audio dans l'exemple), vous pouvez utiliser les importations absolues pour vous référer aux sous-modules des paquets jumeaux. Par exemple, si le module sound.filters.vocor doit utiliser le module echo du package sound.effects, il peut utiliser l'écho de l'importation des effets sonores.
Vous pouvez également utiliser les importations pertinentes dans le module d'importation à partir du module d'importation de l'état d'importation. Ces importations utilisent les points de départ pour spécifier les paquets actuels et les paquets parents impliqués dans leur importation. A partir du module surround, par exemple, vous pouvez utiliser ce qui suit :
à partir de . import echo
à partir de .............................................................................................................................................................................................................................................
à partir de ..filters importer l'égaliseur
Veuillez noter que les importations pertinentes sont basées sur le nom du formulaire actuel. Puisque le nom du module principal est toujours "__main__", les modules qui doivent être le module principal d'une application Python doivent toujours utiliser des importations absolues.
Paquets dans plusieurs répertoires
Les paquets supportent un autre attribut spécial : __path__. Il est initialisé sous la forme d'une liste contenant le nom du dossier avec le __init__.py du paquet. Cela se produit avant que le code dans ce fichier ne soit exécuté. Cette variable peut être modifiée et un changement affecte les recherches futures pour les modules et sous-paquets inclus dans le paquet.
Même si cette fonctionnalité n'est pas souvent utilisée, elle peut être utilisée pour étendre l'ensemble des modules présents dans un paquet.
Entrée et sortie
Il y a plusieurs façons de visualiser les résultats d'un programme : Les données peuvent être produites sous une forme lisible par l'homme ou écrites dans un fichier pour une utilisation ultérieure. Ce chapitre décrit quelques-unes des possibilités.
Formatage de la sortie la plus inhabituelle
Jusqu'à présent, nous avons rencontré deux types de valeurs de sortie : et la fonction print(). (Une troisième option est la méthode write() des objets du fichier ; le fichier de sortie par défaut peut être appelé sys.stdout. Voir la référence de la bibliothèque pour plus d'informations.)
Souvent, vous voulez avoir plus de contrôle sur le formatage de sortie que de simples valeurs séparées par l'espace de sortie. Il y a deux façons de formater la sortie : La première est de faire tout le traitement des cordes vous-même ; en utilisant les opérations de coupe et de liaison, vous pouvez composer n'importe quel arrangement que vous pouvez imaginer. Le type de chaîne a quelques méthodes qui exécutent quelques opérations utiles pour remplir les chaînes jusqu'à une certaine longueur, que nous allons discuter prochainement. La deuxième option est d'utiliser la méthode format().
Le module string contient un modèle de classe qui fournit un moyen de remplacer les valeurs dans les chaînes de caractères.
Bien sûr, une question demeure : comment convertir les valeurs en chaînes de caractères ? Heureusement, Python sait comment convertir n'importe quelle valeur en une chaîne de caractères : Vous passez la valeur à la fonction repr() ou str().
Le but de la fonction str() est de retourner une représentation humaine lisible de la valeur, tandis que repr() est censé être lisible par l'agent utilisateur (ou forcer une syntaxe d'erreur s'il n'existe pas de syntaxe équivalente). Pour les objets qui n'ont pas de représentation lisible par l'homme, str() renvoie la même valeur que repr(). De nombreuses valeurs telles que les nombres ou les structures telles que les listes et les dictionnaires utilisent la même représentation pour les deux fonctions. Surtout les chaînes de caractères ont deux représentations différentes.
Quelques exemples :
>>> s ='Hello world !
str(i) >>> str(i)
"Bonjour le monde !
>>> réimpression(s)
"Bonjour le monde !"
>>> Str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>>>> s ='La valeur de x est ' + repr(x) + ', et y est ' + repr(y) + '....'.
>>> Imprimer(s)
La valeur de x est 32,5 et y est 40000...............................................
La fonction #repr() pour une chaîne de caractères utilise des guillemets et des barres obliques inverses :
... hello ='Hallo Welt\n' (hello world\n)
>>> Hellos = repr(hello)
>>> Impression (enfer)
Bonjour, Mondo.
>>> L'argument pour repr() peut être n'importe quel objet Python :
... repr((x, y, y, y, ("spam", "œufs")))))))
"32,5, 40000, ('spam','oeufs')".
Voici deux façons de créer un tableau de nombres carrés et cubiques :
>>> pour x dans la plage (1, 11) :
... print(repr(x).rjust(2), repr(x*x).rjust(3), end=''' ')
... # Faites attention à l'utilisation de "end" dans la ligne précédente.
... impression(repr(x*x*x*x*x*x*x).rjust(4))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>> pour x dans la plage (1, 11) :
... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x, x*x, x*x*x*x)))).
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
(Notez que dans le premier exemple, un espace par colonne est ajouté par la façon dont print() fonctionne : Sépare ses arguments par des espaces.)