[Python] [OT]: PHP critique [ERA] Re: Python e html

enrico franchi enrico.franchi a gmail.com
Gio 8 Dic 2011 19:47:22 CET


2011/12/8 Marco Beri <marcoberi a gmail.com>

> Può avere senso trappare l'import, per esempio:
>
> try:
>     from functools import wraps
> except ImportError:
>     from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
>
>
> Tra l'altro è in questi casi che trovo utile il costrutto import ... as
> ....
>
>
Infatti. Oppure in altri casi... per esempio networkx e' una libreria
abbastanza complessa che serve per fare network analysis. Come backend di
visualizzazione supporta graphviz (mi pare con due librerie diverse),
matplotlib e poi non so cos'altro ancora. In piu' per fare certi calcoli
puo' opzionalmente appoggiarsi a numpy o scipy.

Questo caso in C/C++ sarebbe stato gestito con un po' di autotools magic,
essenzialmente non compilando le parti che dipendevano da librerie non
disponibili. Aggiungo poi che questo approccio alla lunga e' una gran
rottura di palle che mi ha piu' volte deliziato. E' specialmente
entusiasmante sulle distribuzioni linux basate principalmente su pacchetti
binari dove diventa necessario creare un fottilione di versioni diverse
oppure fare il pacchettone omni-comprensivo.

In Python invece semplicemente si usa quello che serve. Alle volte il loro
approccio e' un po' estremo per i miei gusti. Per esempio in alcune
funzioni fa proprio:

def floyd_warshal_numpy(graph, ...):
    try:
        import numpy as np
    except ImportError:
        ...
    ...

Da un punto di vista prestazionale non e' un problema (un fw su una rete di
dimensione ragionevole domina il tempo di import, nonostante tutto). Pero'
e' bruttarello...

Ah, infine lo ho visto fare anche in un caso piu' simile al tuo: quando hai
piu' librerie che implementano una certa funzione e vuoi la "migliore". Un
caso tipico e' cStringIO, ma in effetti e' piu' generale.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20111208/2eacef47/attachment-0001.html>


Maggiori informazioni sulla lista Python