Re: [Python] Ottimizzare la lettura/scrittura di grossi blocchi di dati su file.

2013-06-25 Per discussione Gollum1
Il giorno 25/giu/2013 06:58, "Giovanni Porcari" <
giovanni.porc...@softwell.it> ha scritto:

> Generatori ?

Orpo... salta sempre fuori qualcosa di nuovo... cercherò notizie...

Grazie
Byez
-- 
Gollum1
teoro, dov'è il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Luca Bacchi
Anche se Python ti consente di farlo... Il fatto che tu debba fare una cosa
così "insolita" dovrebbe far suonare un campanellino.

Potresti implementare un "factory" (cerca factory method su google) che, ti
restituisce l'istanza della classe o None, se necessario.

Ancora meglio la tua potrebbe essere una situazione in cui puoi
implementare un NullObject Design Pattern. Anche qui cerca su Google per
chiarimenti.

Ciao :-)

L


Il giorno 25 giugno 2013 09:41, Marco Giusti  ha
scritto:

> On Mon, Jun 24, 2013 at 09:01:00PM +0200, Gollum1 wrote:
> > Il 24 giugno 2013 18:51, Marco Giusti  ha
> scritto:
> > > On Mon, Jun 24, 2013 at 06:30:52PM +0200, Gollum1 wrote:
> > >> Ho provato a guardare un po' di documentazione, oltre a quelle
> > >> espresse qui in lista, anche in altri luoghi gli sviluppatori non sono
> > >> troppo propensi a questa soluzione...
> > >>
> > >> probabilmente la soluzione del raise è quella sintaticamente più
> corretta...
> > >>
> > >> ora però devo capire come funziona la cosa, alcuni script fatti per il
> > >> 2.x con il 3.x non funzionano correttamente... e la documentazione per
> > >> la 3.x non riesco a capirla...
> > >>
> > >> leggendo la documentazione mi pare di capire che il numero e il
> > >> messaggio dell'eccezione viene registrata in args, quindi il fatto che
> > >> io abbia usato args come parametro di chiamata della classe, potrebbe
> > >> essere un errore... devo quindi considerare args come una parola
> > >> chiave del linguaggio e non usarla per altre cose?
> > >
> > > no, args non è una parola chiave del linguaggio e puoi usarla nei
> limiti
> > > di correttezza come nome di variabile. se posti un esempio di codice
> > > forse capiamo meglio e possiamo aiutarti meglio.
> >
> > Oddio... o sto rincoglionendo ora... o ero strafatto alcuni giorni fa...
> >
> > stavo cercando la documentazione tra Python2 e Python3... ed ero
> > arrivato al punto che lo script falliva nella forma in cui era scritto
> > l'exception quando dovevo creare una directory...
> >
> > e quindi ho dovuto modificare il blocco try - exception...
> >
> > il bello è che ora mi sono messo a ricercare i vari documenti che
> > avevo letto al tempo (qualche giorno fa)... e non ne trovo uno...
> >
> > c'era un documento in http://docs.python.org/3/ che diceva
> > esplicitamente che l'exception metteva il codice di errore dell'errore
> > e il relativo messaggio come primi due parametri, ed opzionalmente (in
> > relazione a quale era l'errore sollevato) poteva esserci un terzo
> > parametro (il nome del file)... e tutti questi venivano restituiti
> > nella variabile args... da qui il fatto che io pensassi che args fosse
> > diventata una parola chiave...
>
> Quando parli di keyword parli di qualcosa di specifico. Tanto per essere
> chiari:
>
> >>> as = "ciao"
>   File "", line 1
> as = "ciao"
>  ^
> SyntaxError: invalid syntax
> >>> args = "ciao"
> >>>
>
> ma hai in qualche maniera ragione quando dici che gli argomenti passati
> al costruttore di una eccezione vengono salvati in args:
>
> >>> try:
> ...  raise RuntimeError("non", "hai", "detto", "la", "parola",
> "magica")
> ... except Exception as e:
> ...  print(*e.args)
> ...
> non hai detto la parola magica
> >>>
>
> Args è un attributo dell'eccezione e niente di vieta di usare comunque
> una variabile di nome args. Il documento a cui fai riferimento
> probabilmente è questo[1].
>
> [1] http://docs.python.org/3/library/exceptions.html#BaseException.args
>
> ciao
> m.
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Luca Bacchi
Non è brutto come sembra! Non l'ho mai usato neppure io ma, se non sbaglio,
circola una presentazione di Martelli sui Design Pattern in Python in cui
ne fa uso per implementare, mi sembra un Singleton. E se lo fa lui, "si può
fare"!

Detto questo credo avesse senso suggerire un approccio più tradizionale e
meno legato alle specificità di Python.


Il giorno 25 giugno 2013 14:21,  ha scritto:

> No, non e' brutto come sembra (sintassi a parte).
>
> A basso livello l'operatore __new__ corrisponde alla chiamata del membro
> tp_new: in quella chimata si creano i dati (new/malloc) che poi si usano
> durante __init__.
>
> Mentre a livello C/C++ questo ha senso, in python lo e' meno (in piu' di
> dieci anni che sviluppo in python non ricordo di avere mai usato __new__!).
>
>
>
>
> On 2013-06-25 13:42, Daniele Varrazzo wrote:
>
>> On Mon, 2013-06-24 at 16:00 +0200, Simone Federici wrote:
>>
>>> 2013/6/24 Antonio Cavallo 
>>>
>>> > class A(object):
>>> > def __new__(cls):
>>> > if cond:
>>> > return A
>>> > else:
>>> > return None
>>> >
>>>
>>> brutto brutto brutto brutto
>>>
>>
>> Bruttissimissimissimo.
>>
>> Non perdere tempo dietro a quest'idea: un costruttore che restituisce
>> None è una violazione criminale del Principio di Minima Sorpresa.
>>
>> Scrivi un factory method, che potrebbe essere una funzione a sè ma anche
>> un metodo della classe stessa:
>>
>> class A:
>> def __init__(self, args):
>> if not cond(args):
>> raise ValueError
>> ...
>>
>> @classmethod
>> def new_or_none(cls, args):
>> try:
>> return cls(args)
>> except ValueError:
>> return None
>>
>> a = A.new_or_none(...)
>>
>
> __**_
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/**mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Simone Federici
2013/6/25 Luca Bacchi 

> una presentazione di Martelli sui Design Pattern in Python in cui ne fa
> uso per implementare, mi sembra un Singleton.


Questa?
http://www.aleax.it/gdd_pydp.pdf

Ma che centra, non è brutto sovrascrivere __new__
è brutto che ritorni None

Per me non è leggibile l'utilizzo

>>> a = Pippo(1, 2, 3)
>>> a.jump()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'NoneType' object has no attribute 'jump'
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Marco Mariani
Vale ovviamente anche per liste, dizionari, set e quant'altro. Quanti
metodi ho ridotto in metà codice facendo in modo di evitare None con gli
if/else che si portano appresso..
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Gollum1
Il giorno 25/giu/2013 14:58, "enrico franchi"  ha
scritto:
>
> 2013/6/25 Gollum1 :
>
> > Così dovrebbe essere tutto più pulito e lineare.
>
> No, non direi. Un oggetto ci aspettiamo che sia in uno stato "valido"
> quando creato.

Forse non hai capito il mio ultimo post. L'oggetto lo creo comunque,
coerentemente con quello che deve essere... semplicemente non verrà
associato al nome di un file (quello che deve fare la classe è appunto dare
dei metodi per l'accesso a dati standardizzati in alcuni file preformattati
ed elaborarli)... e quindi i metodi, quando richiamati, ne terranno conto e
ritorneranno un valore appropriato.

Byez
-- 
Gollum1
teoro, dov'è il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Marco Beri
2013/6/25 Daniele Varrazzo 

> È anche utile capire perché uno fa una cosa, non solo ripetere quello
> che dice senza tenere in considerazione il contesto né le conseguenze.
> Altrimenti è religione, non informatica.
>
> - This isn't a fucking piece of evidence, this is a person! He's a
> friend of mine, and you're not gonna bury him in the fucking garden.
>

Citare Fight Club in un modo così meraviglioso, mi rende invidioso del tuo
cervello.

Ciao.
Marco.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Simone Federici
2013/6/25 Daniele Varrazzo 

> Martelli ha usato __new__ per implementare un "borg", che implementa
> il pattern singleton.
>

Io amo il borg, ma potrei dissentire sul fatto che è l'implementazione di
un singleton.

Sono tanti oggetti che contividono uno stato (il __dict__)
:-D

Cmq a parte la semantica, sono d'accordo che explicit is better than
implicit.

Se devi implementare un singleton è meglio un classico @classmethod
get_instance() che magari usa il borg (sharing del dict) ma lancia un
eccezione se crei l'oggetto direttamente.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Marco Beri
On Tue, Jun 25, 2013 at 4:11 PM, Nicola Larosa  wrote:

> Marco Beri wrote:
> > Citare Fight Club in un modo così meraviglioso, mi rende invidioso
> > del tuo cervello.
>
> Grazie per non aver detto "geloso".
>
> Solo una domanda: cos'è Fight Club? ;-)
>

È uno dei più bei film che io abbia mai visto.

Il libro non l'ho ancora letto.

Ciao.
Marco.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trasformare una stringa in un nome di funzione.

2013-06-25 Per discussione Flaper87
2013/6/25 Giovanni Porcari 

>
> Il giorno 25/giu/2013, alle ore 16:08, Gollum1 
> ha scritto:
>
> > Ho trovato in alcuni articoli (il principale è stato un articolo su
> > stackoverflow, sul case che in python non esiste) e nel testo del
> > nostro Marco Beri la possibilità di utilizzare una funzione come
> > argomenti di un'altra funzione...
> >
> > il mio intento sarebbe quello di richiamare delle funzioni in base ad
> > un parametro passato dalla linea di comando, e processato da
> > argparse()
> >
> > quindi ho preparato questa def:
> >
> > def exec_function(function, *args, **kargs):
> >function(args, kargs)
> >
> > nel main richiamo la funzione passando come primo argomento l'output
> > di argparse relativo proprio a quello che mi serve...
> >
> > il problema è che function risulta essere una stringa, e giustamente
> > non può essere usata come funzione... come posso passare dal nome
> > della funzione contenuta in una stringa, alla funzione vera e propria?
> >
> > Naturalmente ora tutto funziona con una serie di if...elif...else,
> > quindi è una domanda più accademica che altro.
> >
> > Grazie...
> >
>
>
> usare getattr(self, nome) ?
>


In base all'uso finale di ciò che stai facendo, ci sono diversi metodi per
"caricare" una funzione partendo dal suo nome:

1) Se tutte le funzioni sono dentro lo stesso modulo e si tratta di uno
"script" potresti usare globals() e prenderti la funzione da lì.

2) Un'altro metodo sarebbe avere il "path" d'importazione
("miomodulo.miafunzione") della funzione ed importarla in exec_function.
(Questa non la consiglio ameno che tu non sappia esattamente cosa stai
facendo. Ci sono metodi migliori per gestire import dinamici)

3) Se si tratta invece di un metodo ed è definito nella classe che
definisce exec_function (cosa che non sembra, vista la signature di
exec_function) allora potersti usare getattr.

4) Usa entry_points e carica le funzioni che appartengono al tuo namespace
dinamicamente. Stevedore[0] è una libreria che ti permette fare questo
facilmente ed ha supporto per diversi pattern.

Personalmente, preferisco #4 ameno che non stia facendo un semplice script.

FF

[0] http://stevedore.readthedocs.org/en/latest/

-- 
-- 
Flavio (@flaper87) Percoco
http://www.flaper87.org
http://github.com/FlaPer87
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trasformare una stringa in un nome di funzione.

2013-06-25 Per discussione Gollum1
Il giorno 25/giu/2013 16:30, "Pietro Zambelli"  ha
scritto:
> exec_funz(miafunz1, 'a', 'b', 'c')
> exec_funz(miafunz2, 'a', 'b', 'c')

Così funziona anche a me, ma se miafunz è una stringa che contiene il nome
della funzione vera e propria, non funziona...

-- 
Gollum1
teoro, dov'è il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trasformare una stringa in un nome di funzione.

2013-06-25 Per discussione Gollum1
Il giorno 25/giu/2013 16:27, "Giovanni Porcari" <
giovanni.porc...@softwell.it> ha scritto:
>
> usare getattr(self, nome) ?

Credo che questa sia la soluzione corretta... però non riuscivo a capire
cher cosa mettere come app... in effetti non avevo provato con self...

La situazione è la seguente:

Le funzioni da richiamare sono nello stesso file del programma principale,
anche la def che le chiama... quindi tutto si svolge in locale. Avevo
provato con __main__ con e senza appici... ma non funzionava... appena
posso provo con self.

Grazie.
-- 
Gollum1
teoro, dov'è il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trasformare una stringa in un nome di funzione.

2013-06-25 Per discussione Marco Beri
2013/6/25 Gollum1 

> Il giorno 25/giu/2013 16:27, "Giovanni Porcari" <
> giovanni.porc...@softwell.it> ha scritto:
>
> > usare getattr(self, nome) ?
>
> Credo che questa sia la soluzione corretta... però non riuscivo a capire
> cher cosa mettere come app... in effetti non avevo provato con self...
>
> La situazione è la seguente:
>
> Le funzioni da richiamare sono nello stesso file del programma principale,
> anche la def che le chiama... quindi tutto si svolge in locale. Avevo
> provato con __main__ con e senza appici... ma non funzionava... appena
> posso provo con self.
>

Inutile provare. Il self non ha niente di speciale. È solo una (buona)
convenzione.

Se proprio non hai altra soluzione, usa globals():

def pippo():
print "Eccomi!"

def pluto():
globals()['pippo']()


Se chiami pluto() vedrai stampare "Eccomi!".

Ciao.
Marco.

http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] trasformare una stringa in un nome di funzione.

2013-06-25 Per discussione Nadir Sampaoli
Il giorno 25 giugno 2013 19:13, Pietro Zambelli ha scritto:

> ma non puoi cambiare il codice in modo da avere invece che il nome della
> funzione, la funzione stessa?
>

Da quello che ho capito io, lui già lo fa con gli «if..elif..». Sta
cercando un modo più automatico di passare dagli argomenti avuti da linea
di comando (che sono stringhe) ad oggetti funzione da chiamare.

Qualche tempo in un'altra mail fa qualcuno aveva menzionato una qualche
libreria che ti permette di mappare direttamente le funzioni sugli
argomenti della CLI. Speravo di aver salvato il link tra i bookmark ma non
è così. Ti permetterebbe di fare una cosa del tipo (molto molto a grandi
linee):

import sys
import nonmiricordo

qualcosa = nonmiricordo.Qualcosa()

@qualcosa.unqualchedecoratore
def command(arg):
print 'hello ' + arg

if __name__ == '__main__':
qualcosa.esegui(sys.argv[1:])

$ program.py command --arg=foo
hello foo

Insomma, la non meglio definita libreria riempie il buco fra argomenti come
stringa e codice associato.
Che bello essere così dettagliati! Magari qualche anima pia interviene a
precisare!

Ciao,
Nadir
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ritornare un oggetto None quando dichiaro una classe...

2013-06-25 Per discussione Marco Beri
Il giorno 25/giu/2013 20:08, "Diego Barrera"  ha
scritto:
>
> Il 25/06/2013 16:14, Marco Beri ha scritto:
>
>> On Tue, Jun 25, 2013 at 4:11 PM, Nicola Larosa > wrote:
>>
>> Marco Beri wrote:
>> > Citare Fight Club in un modo così meraviglioso, mi rende invidioso
>> > del tuo cervello.
>>
>> Grazie per non aver detto "geloso".
>>
>> Solo una domanda: cos'è Fight Club? ;-)
>>
>>
>> È uno dei più bei film che io abbia mai visto.
>>
>> Il libro non l'ho ancora letto.
>>
> ..penso che Nicola si riferisse alla prima regola del fight club :)

Ma in scala da 1 a 10, quanto sono tonto?

:-))

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Problema con Tutorial per principianti in Python

2013-06-25 Per discussione Gabriele Casagrande
Salve, io ho scaricato il testo "Tutorial per principianti in
Python"
dal sito Python.it Ho cominciato a leggerlo e a provare i primi esempi che
da (mi sono appena affacciato sul mondo della programmazione). Il problema
che anche col semplice esercizio del >>> print "Hello, World!" mi viene
dato l'errore "invalid synthax". Cosa sbaglio? Come posso rimediare?

Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python