<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9007558695936423464</id><updated>2011-04-22T01:33:41.766+02:00</updated><category term='python'/><category term='Speciali'/><category term='moduli'/><title type='text'>Python Hacks</title><subtitle type='html'>Piccoli trucchi e guide a python</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pythonhacks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9007558695936423464/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pythonhacks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Francesco</name><uri>http://www.blogger.com/profile/13594598526498466549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FHUv1g-qcNs/SRhuW-6dC1I/AAAAAAAAAGg/9KYEPemndoA/S220/hamburger115.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9007558695936423464.post-3300617775096734219</id><published>2008-12-07T22:34:00.007+01:00</published><updated>2008-12-08T21:21:40.938+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='moduli'/><title type='text'>Python gestire i package [1]</title><content type='html'>Un package è insieme di moduli disposti in una cartella, che può contenere anche sottocartelle, nella quale possono essere disposti in modo chiaro. Per esempio se noi avessimo una ventina di moduli che servono a manipolare delle immagini potremmo disporli nella stessa cartella del programma che li utilizza ed importarli come semplici moduli(e avremmo una cartella con file .py disposti alla rinfusa) oppure ordinarli in un package dove potrebbero essere disposti in sottopackage, in una struttura ordinata e facile da gestire.&lt;br /&gt;&lt;br /&gt;Praticamente un package è una cartella che può contenere delle altre cartelle(sottopackage) dove sono disposti i moduli. Se, riprendendo l'esempio di prima, avessimo delle librerie per manipolare immagini potremmo creare un package cosi:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;/immagini               #cartella principale del package&lt;br /&gt;__init__.py             #file &lt;span style="font-weight: bold;"&gt;__init__&lt;/span&gt; per inizializzare il package&lt;br /&gt;/converti               #sottopackage &lt;span style="font-weight: bold;"&gt;coverti&lt;/span&gt; che contiene i moduli per convertire le immagini&lt;br /&gt;  __init__.py          #file &lt;span style="font-weight: bold;"&gt;__init__&lt;/span&gt; per inizializzare il sottopackage&lt;br /&gt;  png.py               #modulo &lt;span style="font-weight: bold;"&gt;png.py&lt;/span&gt;&lt;br /&gt;  jpg.py&lt;br /&gt;  gif.py&lt;br /&gt;/trasforma&lt;br /&gt;  __init__.py&lt;br /&gt;  ruota.py&lt;br /&gt;  scala.py&lt;br /&gt;load.py                 #modulo che non fa parte di sottopackage ma solo del package&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Quando importiamo il package, python cerca nella stessa cartella del programma una sottodirectory che si chiama con lo stesso nome del package  e controlla che al suo interno ci sia un file &lt;span style="font-weight: bold;"&gt;__init__.py&lt;/span&gt;.&lt;br /&gt;lo stesso accade quando includiamo un sottopackage.&lt;br /&gt;&lt;br /&gt;Il file &lt;span style="font-weight: bold;"&gt;__init__.py&lt;/span&gt;  può anche essere un semplice file vuoto oppure può inizializzare il package o settare la variabile globale __all__, che vedremo in un altro post.&lt;br /&gt;&lt;br /&gt;Proviamo ora ad importare il package, cosa che è molto simile all'importazione dei moduli:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;import immagini.load&lt;/pre&gt;&lt;/div&gt;Ecco, tutto qui!!! Abbiamo importato il modulo &lt;span style="font-weight: bold;"&gt;load.py&lt;/span&gt; del package immagini. Ora possiamo usarlo come un normale modulo, usando funzioni e classi, specificando però tutto il percorso della libreria:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;immagini.load.&lt;span style="font-style: italic;"&gt;funzione&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;attributi&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;questo userà una funzione del modulo load. Se non volete scrivere ogni volta tutto ciò potete anche fare:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;from immagini import load&lt;br /&gt;&lt;br /&gt;load.&lt;span style="font-style: italic;"&gt;funzione&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;attributi&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;oppure:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;from immagini.load import funzione&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;funzione&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;attributi&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;o ancora:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="font-style: italic;"&gt;from immagini.load import *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;funzione&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;attributi&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;L'asterisco indica di importare tutte le funzioni del modulo. Per importare i sottopackage basta usere uno dei tre metodi seguenti, del tutto simili a quelli appena visti:&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;import immagini.converti.png&lt;br /&gt;from immagini.converti import png&lt;br /&gt;from immagini.converti.png import *&lt;br /&gt;from immagini.converti.png import &lt;span style="font-style: italic;"&gt;funzione&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Insomma l'import,  a parte qualche punto, è del tutto complementare al normale import.&lt;br /&gt;&lt;br /&gt;Spero di essere stato chiaro con il mio primo post se avete problemi chiedetemi con i commenti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9007558695936423464-3300617775096734219?l=pythonhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonhacks.blogspot.com/feeds/3300617775096734219/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9007558695936423464&amp;postID=3300617775096734219' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9007558695936423464/posts/default/3300617775096734219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9007558695936423464/posts/default/3300617775096734219'/><link rel='alternate' type='text/html' href='http://pythonhacks.blogspot.com/2008/12/python-gestire-i-package-1.html' title='Python gestire i package [1]'/><author><name>Francesco</name><uri>http://www.blogger.com/profile/13594598526498466549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FHUv1g-qcNs/SRhuW-6dC1I/AAAAAAAAAGg/9KYEPemndoA/S220/hamburger115.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9007558695936423464.post-8459137144271604131</id><published>2008-12-07T22:26:00.001+01:00</published><updated>2008-12-07T22:29:24.248+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speciali'/><title type='text'>Apertura blog</title><content type='html'>Salve a tutti questo è il mio nuovo blog in cui scriverò alcuni articoli dedicati a python ma senza dimenticare l'Open Source e linux in particolare, che è il mio OS preferito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9007558695936423464-8459137144271604131?l=pythonhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonhacks.blogspot.com/feeds/8459137144271604131/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9007558695936423464&amp;postID=8459137144271604131' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9007558695936423464/posts/default/8459137144271604131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9007558695936423464/posts/default/8459137144271604131'/><link rel='alternate' type='text/html' href='http://pythonhacks.blogspot.com/2008/12/apertura-blog.html' title='Apertura blog'/><author><name>Francesco</name><uri>http://www.blogger.com/profile/13594598526498466549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FHUv1g-qcNs/SRhuW-6dC1I/AAAAAAAAAGg/9KYEPemndoA/S220/hamburger115.jpg'/></author><thr:total>1</thr:total></entry></feed>
