Re: [Python] un bel dilemma

2015-07-28 Per discussione Nadir Sampaoli
Il 28/lug/2015 19:06, "enrico franchi"  ha
scritto:
> Il contrario: le funzioni totali (per definizione) terminano sempre. Se
hai solo funzioni totali termini sempre [a meno che nel frattempo non
collassi l'universo -- escludendo problemi hw di natura piu' mondana: le
mdt per definizione non si spaccano ]. Comunque, battute a parte: le
funzioni totali per definizione terminano. Le funzioni parziali possono non
terminare per determinati (potenzialmente tutti) gli input. Non a caso hai
bisogno delle funzioni parziali per esprimere quello che e' intuitivamente
turing-calcolabile. Se hai le funzioni parziali, hai anche l'halting
problem.
Capisco. Ma tolte le funzioni non-totali (aka parziali) che contengono
evidentemente un bottom, esiste anche un insieme di funzioni che pur
essendo ben-tipizzate vanno a bottom. Es.:
https://en.m.wikibooks.org/wiki/Haskell/Fix_and_recursion

Oppure no?

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


Re: [Python] un bel dilemma

2015-07-28 Per discussione Nadir Sampaoli
Il 28/lug/2015 13:03, "enrico franchi"  ha
scritto:
>
> Ehm... *se* fosse Python valido, quell'if valuterebbe sempre a vero (a =
3, varrebbe 3) e stamperebbe 3.
> E' un classico baco che si ha in C e linguaggi similari, dove per 1
utilizzo valido e sensato dell'assegnamento come espressione ce ne sono 9
che sono in realta' bachi dove si intendeva fare una comparazione. Come
vedi e' piuttosto facile confondersi. :)

Ah ok! L'avevo preso per pseudo-codice.

> fn foo() {
> println!("baz")
> }
>
> Questo funziona, foo ritorna () e non finisce per ;. Mi sono perso quello
che intendevi, credo.

In realtà println è una macro (
https://doc.rust-lang.org/std/macro.println!.html) ed espande in un blocco
che termina comunque con punto e virgola (non ho scavato a fondo e non sono
pratico della sintassi delle macro ma immagino sia "turtles all the way
down").

> Ci saranno anche dei linter per PHP, no?
Dovrei dedicarci un po' di tempo in effetti. Io uso syntastic che mi dà
solo gli errori palesi di sintassi (analisi statica e basta).

> Dal punto di vista della type theory pero' *hai* bisogno di un bottom
type logico. Non necessariamente deve essere esprimibile come un valore:
anzi, il problema e' proprio che puoi esprimerlo come un valore.
Concordo.
Nota a margine: tolte le funzioni non-totali non c'è verso di determinare
se una funzione non termina vero? (Turing, NP e compagnia bella, immagino).

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


Re: [Python] un bel dilemma

2015-07-27 Per discussione Nadir Sampaoli
Il 27/lug/2015 10:50, "enrico franchi"  ha
scritto:
>
> Per fare questo devi stravolgere il linguaggio. In pratica devi fare
scomparire il concetto di statement. Che va bene.
> Pero' poi devi accettare:
>
> if a = 3:
> print a
>
> cosa sara' a?
Immagino che a sarà qualcosa che può essere paragonato e che può essere
stampato. Ma, con un po' di fantasia, se ti riferisci al caso in cui a = 3
non valga, direi che manca l'alternativa (sì, sono di quella corrente lì).
>
> Oh, volendo puoi fare stravolgimenti della grammatica per fare funzionare
comunque come si vuole... ma in generale se vai in direzione del "tutto e'
un'espressione, ci vai fino in fondo."
Il che mi sta abbastanza bene.

>
> Comunque la "semantica del corpo della funzione" (che non mi e' chiaro
cosa intendi) non sembra a prima vista il problema.
Intendo il significato che assume la sequenza di istruzioni contenute nella
definizione di una funzione
>
> Diciamo che per poter dire che "return e' obbligatorio" (che risolverebbe
il problema di cui sopra) devi essere in grado di dimostrare staticamente
che ogni path di esecuzione incontra un return. Che probabilmente non e'
eccessivamente complicato da fare.
>
> E ovviamente avresti un botto di funzioni che finiscono con return None.
Oggettivamente non e' che mi piace troppo... pero' va bene cosi'.
Ma io vorrei proprio l'opposto, cioè che il return sia facoltativo (e solo
necessario nel caso di un early return).
>>
>> Il null implicito fa molto php.
>
> I linguaggi che menzioni .. a parte che per certi versi Rust non fa una
cosa troppo diversa da Python. Se non metti return, lui ritorna ().
Solo se termini l'ultima espressione con un punto e virgola.

> Dopo di che il fatto che sia staticamente tipizzato mi fa anche pensare
che se provi ad usare () per assegnarlo a qualcosa che non dovrebbe avere
quel tipo intervenga.
Ed è un bel favore.

> Per il resto, gli altri linguaggi che menzioni di fatto hanno altre
convenzioni: per esempio che l'ultima espressione che compare e' quella che
viene ritornata. La cosa e' relativamente ovvia e poco sorprendente nei
linguaggi "veramente" funzionali.
Che poi nei linguaggi *veramente* funzionali non hai un'ultima espressione
(il che implicherebbe una sequenza procedurale), ma un'unica espressione.
> E una volta che hai static typing, anche la gamma di errori che puo'
causare cala moltissimo. In Ruby? Non cosi' intuitivo, dal mio punto di
vista. Fra le due, preferisco il None implicito rispetto che "quello che e'
ultimo implicito".
Posso chiederti perchè?

Io lavoro per la stragrande maggioranza del tempo in php (no comment
please) e più di una volta vengo morso da return dimenticati (sarà per via
che poi la domenica sto su haskell e rust, boh...)

Poi, vabbè, evitiamo proprio di iniziare il discorso null/bottom, penso si
sia tutti d'accordo ;)

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


Re: [Python] un bel dilemma

2015-07-24 Per discussione Nadir Sampaoli
> La view e' davevro banale
>>
>>
>> def registrazione2(request):
>>
>> render(request, "registrazione2.html", {})
>
>
> mi sa che manca un return

Ecco, una cosa che cambierei in python è la semantica del corpo della
funzione, come espressione invece che come statement (vedi
rust/haskell/ruby/ecc). Il null implicito fa molto php.

Ma magari ignoro ennemila dettagli implementativi, di legacy e di specifica
che motivano la cosa.

Qualcuno ne sa di più?

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


Re: [Python] Filtrare un carattere.

2015-03-18 Per discussione Nadir Sampaoli
Il 18/mar/2015 18:18 "Nadir Sampaoli"  ha scritto:
>
> and :: Bool → Bool → Bool
> and True _ = True
> and _ x = x
>

Eh, scusate, intendevo:

and :: Bool → Bool → Bool
and False _ = False
and _ x = x
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Filtrare un carattere.

2015-03-18 Per discussione Nadir Sampaoli
Il 18/mar/2015 14:44 "Carlos Catucci"  ha scritto:
> Il fatto che Python in caso di AND eviti di eseguire gli altri controlli
(non sono certo del comportamento di altri linguaggi, a naso direi che
quelli statici si comportino diversamente[...]
Più che dinamico vs statico il discorso direi che è sulla "pigrizia" del
linguaggio nell'implementare l'operatore. Se la prima *espressione* è vera
il linguaggio non si degna di calcolare la successiva:

and :: Bool → Bool → Bool
and True _ = True
and _ x = x

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


Re: [Python] Domanda su Bologna-XPUG

2015-03-13 Per discussione Nadir Sampaoli
Il 13/mar/2015 15:37 "Carlos Catucci"  ha scritto:
>
> "Tutti i linguaggi popolari che mi vengono in mente, non importa quanto
> diversi tra loro, hanno uno o piu' build tool.
>
> E Python? La cosa che mi incuriosisce e' la seguente: tutte le volte
> che chiedo un build tool per Python a pythonari esperti, la loro
> risposta mi fa capire che per loro non si tratta di roba importante.

Ciao Carlos,
Puoi fare qualche esempio di caso d'uso?

Per gestire le dipendenze credo basti pip freeze? Poi puoi dirmi: "e per i
moduli non pubblicati sui repository?"
In quel caso forse puoi davvero incorporarli nel progetto in sé (ignoro se
si possa specificare repo alternativi/privati).

Sottoscrivo Manlio riguardo make. Ogni tanto penso che dovrei studiarmelo
perchè è uno strumento utilizzabile per cose che vanno oltre la
compilazione dei progetti in c, e spesso viene reimplementato nel
linguaggio di turno (rake, grunt/gulp).
Certo, un pythonista potrebbe storcere il naso sul fatto dei tab...

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


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Nadir Sampaoli
Il 27/feb/2015 11:18 "Carlos Catucci"  ha scritto:
> Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo fa
prima un esempio dove scrive
>
> employees.forEach(function(emp) {
> totalAge += emp.age;
> });
>
> E va bene, ma qui emp la definisce lui come parametro passato alla
funzione, poi scrive
>
> employees.forEach(emp => {
> totalAge += emp.age;
> });
>
> che sarebbe la lambda, ma scritto cosi' e' poco chiaro.

Quell'esempio secondo me spiega poco. La cosiddetta fat arrow (scritta
`=>`) è presa da coffeescript che ha due notazioni per le funzioni anonime.
Una è `->` (o "thin arrow") e dovrebbe essere equivalente ad una normale
`function () {}`.

La fat arrow invece fa il bind automatico del `this` alla funzione, cioè
dovrebbe equivalere a `(function(){}).bind(this)`.

Se non si è pratici di come funziona il "this" in JS la cosa può risultare
poco chiara.

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


Re: [Python] Che ne pensate?

2015-02-11 Per discussione Nadir Sampaoli
Il 11/feb/2015 15:31 "Fabrizio Soppelsa"  ha
scritto:
> Tecnologicamente non saprei, mai usato. Come analisi sociologica mi viene
da dire: tenendo conto che solo cambiare il paradigma da sync ad async
nelle ultime tendenze del web (backend) è risultato così ostico per la
maggior parte dei programmatori, non vedo il motivo per cui i suddetti
dovrebbero addirittura stravolgere tutto passando alla programmazione
funzionale.
>
> Fabrizio.

La tendenza mi pare invece proprio quella di seguire i principi FP (spesso
associati all'uso di type system che allevino le complicanze tipiche dei
linguaggi dinamici/unityped) quanto più si può.
Un esempio su tutti, lato client, è il successo che sta guadagnando
react.js, un po' in antitesi ad angular che ha invece un approccio più
"javista" (perdonate la grossolanità del paragone).

Per il "problema" del javascript poi sto vedendo fioccare linguaggi
compilabili in JS (Idris, Purescript, Elm per citare alcuni di quelli
ispirati ad Haskell) che tendono per lo meno al funzionale, se non proprio
alla programmazione functional reactive.

Immutabilità, trasparenza referenziale, ecc. aiutano spesso nell'affrontare
problemi complessi.

Che poi, non ditemi che non avete mai usato le list-/dict-comprehensions:
quelle sono prese dritte dritte da haskell.

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


Re: [Python] Python ed internet

2014-11-14 Per discussione Nadir Sampaoli
Il 14/nov/2014 11:25 "Carlos Catucci"  ha scritto:
> E comunque tengo sempre presente Flask per lavori piccoli o che comunque
non richiedano tutte le feature di Django (usare uno Star Destroyer per
ammazzare una mosca).

Di Django ho visto a malapena le funzionalità esposte nel getting started
per cui non ne so molto. Ti/vi chiedo: qual è la vera potenza di Django
confrontato con Flask?
Da quanto ho visto quest'ultimo ha di base in Jinja2 un template system
almeno equivalente a Django.
Si scala fattorizzando i progetti in blueprint (azzarderei che
l'equivalente in django sono le app) e fornisce class-based views per gli
OO-addicted.
Se vuoi l'ORM usi SQLAlchemy.
Di plugin/estensioni/snippet ce ne sono non pochi e la documentazione è ben
fatta.
Quali sono le cose per cui Django si considera più vantaggioso per progetti
non "piccini"?

Django rientra, diciamo, nel filone degli "opinionated framework", alla
"Rails" (sì ho osato) (I'm not even sorry) mentre con Flask parti dai
minimi termini e componi il tuo "framework" (mi verrebbe da fare un
parallelo paragonando i due a Ubuntu vs Arch, ma è meglio di no). È forse
questo punto di partenza predefinito, pre-assemblato, che rende Django
preferibile?

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


Re: [Python] PC Remote Control (windows)

2014-11-11 Per discussione Nadir Sampaoli
> Ciao a tutti, devo scrivere un programma per controllare un PC (windows)
da remoto (da un altro PC windows) in internet.
Ciao,
Controllare in che senso? Una cosa tipo Teamviewer? Oppure ti basta
eseguire dei comandi automatici/automatizzabili?
Una web app che fa da tramite alle operazioni da eseguire sul sistema è la
prima cosa che mi viene in mente, ma senza maggiori dettagli non saprei
neanche se ha senso come suggerimento.

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


Re: [Python] Agile programming Robert Martin

2014-10-04 Per discussione Nadir Sampaoli
Il 04/ott/2014 19:55 "Marco Beri"  ha scritto:
>
> TL;DR?

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


Re: [Python] scannerino th tcp per divertirmi

2014-09-15 Per discussione Nadir Sampaoli
Il 15/set/2014 13:46 "Remo The Last"  ha scritto:
>
> Ma funziona 'sto scanner si o no?
Boh?

> Altra domanda:
> Ma fa cosi tanto schif?
È un peccato che dalle critiche costruttive ricevute (non da me, lo
ammetto; io purtroppo ci ho capito poco di cosa doveva fare questo script,
ma è una mia mancanza) scaturisca questa domanda. Personalmente mi sarei
rallegrato di ricevere una chiara lista di consigli come quelli di Dario
che mi permettesse di migliorare.

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


Re: [Python] scannerino th tcp per divertirmi

2014-09-13 Per discussione Nadir Sampaoli
Ciao Remo,

Non capisco il motivo di questa riga di codice:

sys.stdout.write('\r'+' '*87)

Altra cosa: (ammesso che '\r' sia utilizzato per separare le righe) non
dovresti usare il line feed ('\n') invece che il carriage return ('\r')?

Marco, dopo un paio di tentativi si ottiene un output comprensibile facendo
così ($CHOICE è il numero dell'opzione, da 1 a 8; $ADDRESS è il parametro
da passare allo script):

$ echo $CHOICE | python2 scan.py $ADDRESS > output.txt
(premi Ctrl-C quando ti sei rotto)
$ sed 's/\r/\n/g' output.txt | grep -v "^\s*$"

Saluti,

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


Re: [Python] Swift

2014-06-04 Per discussione Nadir Sampaoli
Premesso che probabilmente non lo userò mai considerando la filosofia apple
del lock-in, come linguaggio se non altro è un passo in avanti rispetto
all'obj-c (come detto simpaticamente da qualcuno: hanno fatto un progresso
di 20 anni, passando da una tecnologia degli anni '60 ad una degli anni
'80...). Punti a favore: ADT (però non ricorsivi :'( ), type classes
apparentemente implementabili (usando una composizione di protocol,
extension e constraints) e, udite udite, Null implementato come
Option/Maybe (ma parlo per sentito dire quindi mi fido il giusto).

Il fatto poi che compili LLVM mi fa porre un quesito: questo significa
forse che qualunque linguaggio "LLVM-aware" può girare su OS X/iOS? (Non
che ci tenga più di tanto visto che non faccio uso di roba apple, ma
sarebbe comunque interessante).

Altra cosa (parlo sempre per ipotesi mia): gli sviluppatori sembrano
abbastanza ricettivi, ho visto qualcuno lamentare la mancanza di
higher-kinded types e loro hanno risposto che valuteranno la cosa!

Ovviamente la domanda (vana e retorica) è: ma non possono semplicemente
sviluppare in open come *tutte* le persone normali?

Vabbè, peggio per loro e per gli appleiani...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ide?

2014-05-24 Per discussione Nadir Sampaoli
Ciao,

Il 24/mag/2014 10:47 "Luigi Fontana"  ha scritto:
>
> Francesco scusa sono al lavoro col cell. Ma da linux dovrei compilarmelo
io?

Sulla documentazione dice che ci sono i package per le distro debian-based.
Su Arch ho visto che c'è nell'AUR (ultimo aggiornamento a settimana scorsa)

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


Re: [Python] Facciadilibro ed il suo linguaggio

2014-03-21 Per discussione Nadir Sampaoli
2014-03-21 15:18 GMT+01:00 Carlos Catucci :
> Leggo su un post di G+
>
> Facebook Introduces 'Hack,' the Programming Language of the Future

All'inizio pensavo fosse un pesce d'aprile anticipato, ma invece sono
proprio seri → https://github.com/facebook/hhvm, http://hacklang.org/

Spesso mi ritrovo a constatare quanto sono incompetente e ottuso come
programmatore.
Poi vedo cose come questa e mi rassereno.

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


Re: [Python] Go for it, or be Rust

2014-03-06 Per discussione Nadir Sampaoli
Ciao a tutti,

Il 06/mar/2014 22:48 "Flaper87" ha scritto:
>
> Articolo interessante però c'è da dire che forse è troppo presto per fare
questi confronti con Rust. Il linguaggio è alla sua versione 0.9 e sta
ancora cambiando, tanto è vero che fino alla 1.0 non ci sarà
retrocompatibilità.
>
Non ho letto l'articolo citato per cui probabilmente mi perdo qualcosa ma
credo che il discorso di Nicola non verta sulle potenzialità del linguaggio.

Ho paura di dire delle bischerate ma mi pare che il type system di Rust sia
ben più sofisticato di Go. Infatti (ancora, abbiate pazienza se sbaglio) mi
pare sia un Hindley-Milner come Haskell (di questi 3 è l'unico con cui sto
facendo pratica per cui so di non essere oggettivo) che personalmente mi da
ancora più gusto di Python da usare.

Comunque tornando al discorso di Nicola credo che lui parlasse più di una
scelta a livello strutturale/filosofico, che peraltro condivido:

> 2014-03-06 21:50 GMT+01:00 Nicola Larosa :
>
>> Oggi scelgo di investire su Go perché vi sento la stessa attenzione per
>> la semplicità e la chiarezza, anche a costo di limitare la libertà
>> espressiva.
>>

Non condivido pienamente la scelta discapito dell'espressività ma dal basso
della mia inesperienza so di avere ben poche basi per decidere.

Sicuramente sono convinto che il "there is more than one way to do it"
andrebbe evitato come la peste.
È il principale motivo per cui nonostante i vari tentativi di passare a
Ruby sono sempre ritornato alla consistenza di Python. Per quanto, non
potrei nemmeno considerarmi un utente di Python visto che mi tocca lavorare
con linguaggi innominabili :(
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] TIOBE vs PYPL

2013-12-26 Per discussione Nadir Sampaoli
Il 26 dicembre 2013 19:01, Carlos Catucci  ha scritto:
> * Per quanto si possano definire oggetti quelli di js, ma ... funzionano e a
> me va bene

http://this-plt-life.tumblr.com/post/41438931672/when-somebody-says-js-has-a-beautiful-object-model

E dopo questo contributo fondamentale,

Saluti a tutti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] E' piu' forte di me

2013-12-23 Per discussione Nadir Sampaoli
> pero` in realta` e` uno strumento come un altro

*cough* http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
*cough*

Non conosco altri strumenti come questo.

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


Re: [Python] Sintassi.

2013-12-20 Per discussione Nadir Sampaoli
Il 20 dicembre 2013 15:30, Gabriele Battaglia  ha scritto:
> Python 2.7.5.
>
> Perchè la sintassi:
>
> while not Menu():
>
> Funziona perfettamente, mentre invece:
>
> while !Menu():
>
> Produce un errore?

La condizione "diverso da" si esprime con "!=", ma il not si esprime
con "not". Da un punto di vista di leggibilità io ringrazio chi ha
fatto questa scelta perchè il not si vede bene, il punto esclamativo
mica tanto (mi tocca scrivere "if( ! cond)" per vederlo bene :)

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


Re: [Python] domanda banale

2013-12-10 Per discussione Nadir Sampaoli
Il 10 dicembre 2013 17:37, Francesco Geri  ha scritto:
> Salve a tutti,
> Vorrei che l'utente finisse di compilare i vari
> record della treeview e poi, successivamente al click in un bottone, i dati
> salvati nella treeview dovrebbero essere recuperati e utilizzati nel normale
> flusso di operazioni. Il problema mio è che in realtà il flusso non si
> ferma: la classe viene istanziata, la finestra generata, i valori
> recuperati, ma il flusso (che dovrebbe attendere l'inserimento dei dati da
> parte dell'utente) non si ferma!
> Qualcuno può darmi una diritta su come risolvere questo banalissimo
> problema?
> Grazie a tutti,

Ciao Francesco,
provo a dire una cavolata.
Il bottone (gli widget di GTK in generale) probabilmente espone una
serie di eventi ai quali ci si può agganciare. Puoi creare una
(funzione di) callback per l'evento del click nella quale fai quello
che ti serve? Può avere senso?

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


Re: [Python] Determinazione altezza albero

2013-12-05 Per discussione Nadir Sampaoli
Ciao,

2013/12/5 Federico Caboni :
> con le generator expressions (quasi uguale):
>
> def depth(tree):
> return 1 if not tree else 1+max((depth(t) for t in tree))
>
> — Federico

Qui, volendo, credo si possa anche togliere un paio di parentesi
intorno al generatore:
> def depth(tree):
> return 1 if not tree else 1+max(depth(t) for t in tree)


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


Re: [Python] [OT] Che distro usate per il vostro desktop (e quale versione)?

2013-11-30 Per discussione Nadir Sampaoli
Che bravi, ragazzi!

Il 30 novembre 2013 00:25, Marco Beri  ha scritto:
> Credo che quasi quasi... Ok, almeno un live CD lo provo.
>
> E magari poi faccio un salto mortale carpiato doppio con arch + awesome.

E perchè non XMonad? (scherzo, non ho mai usato nessuno dei due; mi
piacerebbe capire come fare buon uso di un tiling WM perchè credo
davvero che una volta presa la mano migliorino la "manovrabilità" del
sistema, ma per ora Openbox mi basta, non devo comunque quasi toccare
il touchpad visto che puoi configurare quasi tutte le scorciatoie che
vuoi ;-)

> Ciao.
> Marco.
> P.S. Già mi sento urlare a metà del guado: MA PERCHÉ L'HO FATTO!!! :-)

Tranquillo, se uno come me (a malapena un principiante) si orienta
bene su Arch, chiunque può divertircisi. Come giustamente avete fatto
notare tu ed il buon Zambelli, la quantità di documentazione (di
altissima qualità e sempre aggiornata) e di pacchetti (e la loro
semplicità) sono un grande aiuto.

E poi, come resistere al KISS?

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


Re: [Python] [OT] Che distro usate per il vostro desktop (e quale versione)?

2013-11-29 Per discussione Nadir Sampaoli
Ciao,
Il giorno 29 novembre 2013 17:52, Karim  ha scritto:
>
> Ciao a tutti, sul fronte linux vorrei chiedervi che distro usate come 
> desktop. Ora vi sto scrivendo da una ubuntu 13.10, ma ogni volta che installo 
> una ubuntu nuova, mi rendo conto che forse è meglio usare la LTS. Inoltre 
> questo unity non mi fa impazzire.
>
> Cosa usate voi?
>
> --
> Karim Gorjux


Arch Linux. Una delle tante cose belle è che è rolling release per cui
non esistono versioni nè, di conseguenza, "upgrade nightmares" (e
pacman [package manager] è fantastico). Prima usavo Ubuntu, ma da
quando sono passato ad Arch non mi sono più guardato indietro.
Come WM uso Openbox.

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


Re: [Python] ReportLab e Barcode 128

2013-11-11 Per discussione Nadir Sampaoli
Il giorno 11 novembre 2013 18:19, Riccardo Brazzale <
riccardo.brazz...@gmail.com> ha scritto:

> Ho creato un piccolo report con Reportlab nel quale devo inserire un
> barcode di tipo 128
>
> Funziona tutto ma non riesco a regolare le dimensioni del barcode (altezza
> e larghezza).
>
> Qualche idea?
>

Non avendo idea di cosa fosse Reportlab l'ho cercato su google e ho trovato
questo:
http://fossies.org/dox/reportlab-2.7/classreportlab_1_1graphics_1_1barcode_1_1code128_1_1Code128.html
Puoi vedere che Code128 ha, fra gli attributi, barHeight e barWidth.

Ho provato a modificare lo script che trovi qui:
http://www.blog.pythonlibrary.org/2013/03/25/reportlab-how-to-create-barcodes-in-your-pdfs-with-python/

Con questo codice:
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.pagesizes import letter
from reportlab.graphics.barcode import code128
from reportlab.lib.units import mm


c = Canvas("barcodes.pdf", pagesize=letter)
barcode_value = "1234567890"

barcode = code128.Code128(barcode_value)
barcode.barHeight = 100
barcode.barWidth = 0.2*mm

# le coordinate partono apparentemente da bottom left (↑→)
x = 50
y = letter[1] - barcode.barHeight - 50
barcode.drawOn(c, x, y)

c.save()

Si ottiene questo pdf:
http://docdroid.net/611s

Mentre provando a cambiare altezza e larghezza delle barre:
barcode.barHeight = 100
barcode.barWidth = 1*mm

si ottiene questo pdf:
http://docdroid.net/611x


Does it make sense?

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


Re: [Python] Info web 3d

2013-10-05 Per discussione Nadir Sampaoli
Il giorno 04 ottobre 2013 12:13, Matteo Boscolo <
matteo.bosc...@omniasolutions.eu> ha scritto:

>  Salve a tutti,
>
> avete qualche link utile per renderizzare in una pagina web della
> geometria 3d ? (che non sia pdf) magari con python ??
>

In python non saprei. Hai dato un'occhiata a d3.js  (quindi
rendering lato client)?

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


Re: [Python] calcolare il valore in corrispondenza del massimo

2013-09-27 Per discussione Nadir Sampaoli
>
>  if not max_value or functor(value) > functor(max_value):
>>
>> 2. V1 e V2 non mi sembrano avere lo stesso comportamento, perchè mentre
> V2 restituisce il primo `value` che è non "falsy" e per il quale vale
> `functor(value) > functor(max_value)` (dato che la condizione si
> corto-circuita e non vengono effettuati altri confronti), invece V1
> restituisce l'i-esimo elemento di `self._values` per il quale
> `self._values[i].func() restituisce il valore massimo.
>
> Mi sono perso qualcosa?
>

Ok, scusate, mi ero perso il `not` in `if not max_value`.


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


Re: [Python] calcolare il valore in corrispondenza del massimo

2013-09-27 Per discussione Nadir Sampaoli
2013/9/27 Marco Beri 

> 2013/9/27 Valerio Maggio 
>
>> def _max_value(self):
>> return max(self._values, key=lambda v: v.func())
>>
>
> Eh, torna il valore calcolato e non quello originale...
>

In realtà torna l'originale:

In [27]: class C():
def __init__(self, val):
self.val = val
def func(self):
return self.val
   :

In [28]: values = [C(x) for x in range(10)]

In [29]: value = max(values, key=lambda v: v.func())

In [30]: value is values[-1]
Out[30]: True

In [31]: result = max(value.func() for value in values)

In [32]: result is values[-1].func()
Out[32]: True


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


Re: [Python] calcolare il valore in corrispondenza del massimo

2013-09-27 Per discussione Nadir Sampaoli
Il giorno 27 settembre 2013 13:26, Piergiuliano Bossi
ha scritto:

> V2
> def value_at_max(values, functor):
> max_value = None # si usano trucchetti come questo con None o ci
> sono modi migliori?
> for value in values:
> if not max_value or functor(value) > functor(max_value):
> max_value = value
> return max_value
>
> def _max_value(self):
> return value_at_max(self._values, lambda v: v.func())
>

Probabilmente non ho capito, ma non mi tornano un paio di cose:

1. se `functor = lambda v: v.func()` e `max_value = None` allora
`functor(max_value) = None.func()`, che però non va bene.

2. V1 e V2 non mi sembrano avere lo stesso comportamento, perchè mentre V2
restituisce il primo `value` che è non "falsy" e per il quale vale
`functor(value) > functor(max_value)` (dato che la condizione si
corto-circuita e non vengono effettuati altri confronti), invece V1
restituisce l'i-esimo elemento di `self._values` per il quale
`self._values[i].func() restituisce il valore massimo.

Mi sono perso qualcosa?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT] Standing desk

2013-09-15 Per discussione Nadir Sampaoli
Ah, tra l'altro questa discussione mi ha fatto immediatamente venire in
mente un post che scrisse Swizec qualche tempo fa sul suo blog:
http://swizec.com/blog/write-sitting-down-edit-standing-up/swizec/6175


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


Re: [Python] [OT] Standing desk

2013-09-15 Per discussione Nadir Sampaoli
Il giorno 15 settembre 2013 13:18, Karim  ha scritto:

> Un po' di tempo fa ho visto un documentario della National Geographic:
> "The numbers game". In particolare mi ha colpito la scena del "Silent
> Killer".
>
>
> http://channel.nationalgeographic.com/channel/the-numbers-game/videos/silent-killer/
>
> A questo punto ho preso spunto e ho creato il mio "standing desk". Ora
> sono 2 settimane che sto al computer solo in piedi. C'è qualcuno di
> voi che ha mai provato? Io sinceramente mi trovo molto molto meglio.
>
> Le misure per lo standing desk sono queste:
>
>
> http://cdn.gottabemobile.com/wp-content/uploads/Standing-Desk-Measurments.png
>
> Quindi il ragazzo che si vede nel video, in realtà ha il monitor
> troppo in basso.
>
> Altri di voi stanno in piedi?
>
> :)
>
> --
> Karim Gorjux
>
> Grazie per l'interessante condivisione!
Personalmente non ho mai provato (più che altro per via delle scrivanie
troppo basse; come mostra l'immagine che hai linkato, si dovrebbe fissare
una struttura alla parete per metterci il computer), anche se mi
piacerebbe. Mi posso immaginare i vantaggi: niente più male agli avambracci
(a forza di tenerli appoggiati sul tavolo) e continuo agitarsi sulla sedia
(peggio di un insonne nel letto!). Se poi avessi anche una palestra col
canestro annessa all'ufficio abbandonerei definitivamente i sogni di andare
a lavorare al Googleplex...

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


Re: [Python] Scelta di un IDE

2013-09-13 Per discussione Nadir Sampaoli
Il giorno 13 settembre 2013 10:24, Carlos Catucci
ha scritto:

> Sublime ha delle cose che pochi altri hanno, e rispetto a VIM devi premere
> meno tasti per fare cose (al posto di yy basta un CTRL-C sulla riga dove
> sei, senza evidenziare, per copiarla, oppure shift+ctrl+Arrow[Up|Down]
> muovono la riga (o se selezionate le righe) su e giu. Cosette semplici ma
> il poterle fare da tastiera senza dover fare cut&paste aiutano
>
> len(yy) == len(CTRL-C), no? Sennò ci sarebbe Y (che è uguale a yy).

Di vim mi piace il fatto che puoi, fra le varie cose, aggiungere funzioni
alle configurazioni dei tasti che preferisci (per la funzione di sublime
che hai portato come esempio, ho trovato
http://stackoverflow.com/a/741819/1376657). Tra l'altro, se VimScript (o
VimL, o come si chiama) non ti fa impazzire, ci dovrebbe essere modo di
usare Python (http://orestis.gr/blog/2008/08/10/scripting-vim-with-python/).

Poi, vabbè, l'importante è trovarsi bene con il proprio editor (e che esso
sia sufficientemente veloce), qualunque sia.

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


Re: [Python] Scelta di un IDE

2013-09-12 Per discussione Nadir Sampaoli
2013/9/12 Andrea Lomasto 

> Che IDE usare per python ?
> Sto leggendo pensare da informatico e vorrei usare da subito un ide


Ci sarebbe vim  +
syntastic (al
salvataggio del file questo plugin evidenzia le eventuali righe contenenti
errori di sintassi).
Puoi lanciare l'esecuzione del codice su cui stai lavorando, mappandola su
un tasto sull'interprete. Ad esempio con la seguente configurazione:

autocmd BufRead *.py nmap  :!/usr/bin/env python3 %
autocmd BufRead *.py nmap  :!/usr/bin/env python2 %

premendo F5 si lancia python3, premendo F6 si esegue python2.

Poi per vim ci sono altri mille plugin per funzionalità più specifiche, se
cerchi un po' in giro.

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


Re: [Python] Insegnante Python

2013-07-26 Per discussione Nadir Sampaoli
Il giorno 26 luglio 2013 11:53, Marco Beri  ha scritto:

> 2013/7/26 
>
>> Marco,
>> ti sbagli e di parecchio: probabilmente ti sei demnticato di
>> quanto tempo richieda cominciare, specie se lo si fa' a lato
>> di un altra attivita'.
>
>
Ciao,
può darsi che richieda tempo, ma secondo me questo vale sia per chi impara
da solo che per chi prende lezioni. Considerando la quantità impressionante
di documentazione, codice sorgente pubblicamente accessibile (importante!),
guide, forum (basti pensare a Stackoverflow) che si trova su internet
(ammetto che non tutte le tecnologie hanno materiale facilmente reperibile,
ma qui si parla di Python), il problema di acquisire le informazioni è il
minimo.

A mio avviso ciò che resta costante è la necessità di fare pratica.
Specialmente per iniziare a conoscere un nuovo linguaggio.
Poi magari, a livello avanzato, per risolvere problemi specifici e
complessi un esperto fa comodo. Ma a quel punto immagino che diventi
consulenza.


> Può essere che mi sbagli, ho sempre fatto tutto da solo (pure l'Università
> in pratica) per cui mi sono abituato ad arrangiarmi.
>
> Ho però presunto che Gianluca fosse già un informatico che volesse
> imparare una nuova tecnologia.
>
> Voglio fare una domanda provocatoria: quanti di quelli che scrivono qui in
> lista hanno imparato da soli e quanti hanno seguito delle lezioni a
> pagamento?
>

Pure io sono per lo più autodidatta.

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


Re: [Python] Grafica su python

2013-07-25 Per discussione Nadir Sampaoli
Il giorno 25 luglio 2013 19:27, Enrico Franchi ha scritto:

>
> On Jul 25, 2013, at 1:41 PM, Gollum1  wrote:
>
> > e per di più... con pyQT, puoi avere una buona portabilità sui 3
> > sistemi che vanno per la maggiore (linux, iOS e winzoz, non so se ci
> > sono implementazioni anche per altre piattaforme).
>
> Veramente a me risulta che per iOS Qt di per se non faccia molto. O meglio
> Qt 5 lo fa, ma non mi e' chiaro lo stato di PyQT (e il fatto di fare tutto
> in Python). Qualcuno ha per caso maggiori informazioni?
>

Azzardo, in base al contesto: forse intendeva  OS X?

-- 
Nadir
___
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-26 Per discussione Nadir Sampaoli
Il giorno 26 giugno 2013 00:14, Carlo Miron ha scritto:

> Plac?
> 
>

Esatto! Stavolta il link me lo salvo. Grazie.

--
Nadir
___
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] Dubbio sull'uso delle liste...

2013-06-22 Per discussione Nadir Sampaoli
Grazie Federico ed Enrico per le risposte!

Il giorno 22 giugno 2013 20:55, Carlo Miron ha scritto:

> Il 22 giugno 2013 20:19, Enrico Franchi ha scritto::
>
> > Aggiungo che tutta questa recente mania della programmazione ad oggetti
> ha veramente complicato un sacco
> > di cose...
>
> Per quale definizione di `recente`?
>


La mia 
interpretazione.


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


Re: [Python] Dubbio sull'uso delle liste...

2013-06-22 Per discussione Nadir Sampaoli
Il giorno 22 giugno 2013 11:06, enrico franchi ha scritto:

> Senti, hanno chiamato list qualcosa che si comporta come un array
> estensibile (o vector, per dirla con C++) e che delle liste non e'
> manco parente, visto che ha tutte le complessita' computazionali
> 'sbagliate'.
>
> Nota bene, hash-map e' un modo di implementare la struttura dati
> astratta nota come array associativo (o map o dictionary).
> Quindi dictionary e' solo uno dei nomi con cui quel tipo di struttura
> e' chiamata. Hash Map e' una possibile famiglia di implementazioni.


A questo punto ho un po' di domande.
 - La complessità non dipende dall'implementazione piuttosto che
dall'interfaccia?
 - Il concetto di lista di per sè non è limitato ad una struttura che
espone una sequenza ordinata di elementi?
 - Che (tanto per dire) rimuovere un elemento abbia complessità media O(N)
invece che O(1) perchè incapsula un'array invece di una linked list non
dovrebbe essere disgiunto dall'«interfaccia» lista?

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


Re: [Python] Dubbio sull'uso delle liste...

2013-06-22 Per discussione Nadir Sampaoli
Il giorno 22 giugno 2013 09:02, Daniele Zambelli ha scritto:

>
> Il giorno 22 giugno 2013 00:08, Marco Beri ha scritto:
>
> Carlos giustamente dice che un dict non è ordinato, ma a quanto ho capito
>> non ti serve l'ordine, quindi vai di liste.
>>
>   ^^^
>
> ...dizionari...
>


Peso! Mi rendo conto solo ora dell'ossimoro!
Tra l'altro, come mai non l'hanno chiamato hashmap? Troppe lettere
forse...


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


Re: [Python] Proof of concept per un programma di scansione duplicati.

2013-06-20 Per discussione Nadir Sampaoli
Il giorno 20 giugno 2013 21:55, Marco Beri ha scritto:

> Per cancellare tutti i file doppi questa è ancora più veloce:
>
> sudo rm -r /
>
Per sicurezza aggiungici anche un bel -f!
(per chi non fosse pratico, prego evitare di eseguire il comando!)

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


Re: [Python] operatore percentuali

2013-06-16 Per discussione Nadir Sampaoli
Il giorno 16 giugno 2013 14:42, Gianni Di Noia ha scritto:

>
>
>> > def percentage(part, total):
>> > return part * 100.0 / total
>> >
>> > >>> percentage(8, 80)
>> > 10
>>
>> Questo significa: "la percentuale di ottanta che dà come risultato otto è
>> dieci". Poco chiaro e prono ad errori. Perché inverti i fattori?
>
>
> se ho preso 8 mele da una cesta che ne contiene 80, che % ho preso?
> capita spesso di rispondere a domande così
>

Perfetto. Ma allora non si tratta di «8% of 80», bensì del rapporto fra 8 e
80 (i.e. otto ottantesimi) espresso in centesimi (un tizio barbuto direbbe
che «le parole sono importanti»). Del tipo:

def hundredths_from_ratio(amount, denominator=None):
result = amount * 100.0
if denominator:
 result /= denominator
return result

>>> hundredths_from_ratio(8, 80)
10.0
>>> otto_ottantesimi = 8 / 80
>>> hundredths_from_ratio(otto_ottantesimi)
10.0

Può avere senso?

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


Re: [Python] operatore percentuali

2013-06-15 Per discussione Nadir Sampaoli
Il giorno 15 giugno 2013 16:48, Gianni Di Noia ha scritto:

> Magari me lo son perso, ma farebbe comodo poter utilizzare un operatore
> dedicato al calcolo delle percentuali, tipo:
>
> a = 8 %of 80
> print a
> >> 10
>

Il giorno 15 giugno 2013 19:59, Marco Giusti  ha
scritto:

> comunque per fare quello che chiedeva il nostro amico dovremmo istruire
> l'interprete per sbagliare le tabelline.


Nel senso che 10 non è l'otto per-cento di 80 ma l'otto per-ottanta di 100,
giusto Giusti? (Pun intended)

Comunque non ci vedo niente di male a creare ed usare una funzione del tipo:

def percentage(part, total):
return part * total / 100.0

>>> percentage(8, 80)
6.4


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


Re: [Python] Superstizioni [was: Python web messaggi in Post e link a file in differenti directory]

2013-06-03 Per discussione Nadir Sampaoli
Ciao,

Il giorno 03 giugno 2013 14:12, Daniele San Giovanni ha scritto:

> Cos' è flame ?
>
>
http://it.wikipedia.org/wiki/Flame

(Non che io concordi con l'intervento di Andrea)

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


Re: [Python] Non dovreste perdervi questo domanda su SO

2013-05-20 Per discussione Nadir Sampaoli
>
>  Pardonez moi, ma se io ho 3 operatori e devo controllare se sia vero
>> solo uno controllare 1 vero e 1 falso e uscire non mi sembra corretto. Il
>> terzo potrebbe essere anch'esso vero e quindi la condizione totale (1 T e 2
>> F) non essere verificata. Otterrei quindi un falso positivo.
>>
>
> Carlos
>

Probabilmente non ho capito cosa intendi perchè in realtà  «il "almeno uno,
ma non tutti"»:
 - è diverso da dire «se io ho 3 operatori e devo controllare se sia vero
solo uno»;
 - vale anche per (1 T e 2 F).

Se devi controllare se sia vero solo uno non puoi sfruttare lo
short-circuiting, ma devi consumare tutta la lista di predicati, facendo
una cosa del tipo:

predicates = [A, B, C]
len(filter(None, predicates)) == 1

Ma non sono convinto che tu intendessi questo.

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


Re: [Python] command line parsing

2013-04-07 Per discussione Nadir Sampaoli
Perdono, una piccola correzione al mio messaggio precedente:

Il giorno 07 aprile 2013 16:36, Nadir Sampaoli  ha
scritto:

> Ad esempio il seguente codice:
>
> *import sys*
> import docopt
>
> usage = """
> {program_title}
>
> Usage:
> {launcher} [-V] [(guest|host) (shutdown|reboot) ]
> {launcher} [guest rename ]
> """.format(program_name="Tuo Programma", file_name="python2 " +
> __file__)
>
> args = docopt.docopt(usage, argv=*sys*.argv[1:])
> print(args)
>

In questo script va ovviamente importato anche sys.

Inoltre lo snippet di codice è semplicemente d'esempio, non è necessario
prendere tutto alla lettera.

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


Re: [Python] command line parsing

2013-04-07 Per discussione Nadir Sampaoli
-- Messaggio inoltrato --

> From: Valerio Pachera 
> To: lista python 
> Cc:
> Date: Sat, 6 Apr 2013 12:10:30 +0200
> Subject: [Python] command line parsing
> Ciao a tutti, sto creando una spece di cli per amministrare delle macchine
> virtuali.
> Quello che mi preme è tenere una sintassi semplice semplice e rigida.
>
> Ho letto un po' di documentazione su argparse ma faccio fatica a capire se
> fa al caso mio o è meglio che mi scriva un semplice parser.
>
> La sintassi della cli NON prevede trattini ( - ).
> Il comando sarebbe logicamente diviso in sottocomandi (subparser potrebbe
> essere utile).
>
> cli.py guest shutdown 
> cli.py host shutdown 
>
> Per il "sottocomando" 'guest' sono previste varie opzioni, alcune che
> possono essere comuni con il sottocomando 'host', come nell'esempio.
>
> Cosa ne pensate?
>
> Alla fine della fiera 'guest' e 'shutdown' insieme identificano la
> funzione che andrò a richiamare che avrà come argomento .
>
>
Ciao Valerio,
una libreria che a me ha semplificato la vita è docopt .
Se sei pratico dello standard POSIX per i messaggi di help (quelli che
vengono stampati quando chiami un programma con -h o --help) sei a posto.
Altrimenti, sul sito di docopt, il funzionamento è spiegato piuttosto
chiaramente.

La cosa bella di *docopt* (oltre all'idea, abbastanza geniale, che lo
configuri con un help message che è definito da uno standard) è che ti
restituisce una hashmap completa delle opzioni (inclusi valori di default
che possono essere o quelli automatici o specificati da te), e distingue, a
seconda del tipo degli argument, booleani e stringhe (ossia, un argument
che non richiede assegnamento di valori va di default a False, non a None).

Ad esempio il seguente codice:

import docopt

usage = """
{program_title}

Usage:
{launcher} [-V] [(guest|host) (shutdown|reboot) ]
{launcher} [guest rename ]
""".format(program_name="Tuo Programma", file_name="python2 " +
__file__)

args = docopt.docopt(usage, argv=sys.argv[1:])
print(args)

si comporta così:

*user@host $* python2 tuo_script.py
Usage:
python2 tuo_script.py (guest|host) (shutdown|reboot) 
python2 tuo_script.py guest rename  

*user@host $* python2 tuo_script.py guest rename foo bar
{'': 'foo',
 '': 'bar',
 'guest': True,
 'host': False,
 'reboot': False,
 'rename': True,
 'shutdown': False}

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


Re: [Python] Glitch

2013-01-04 Per discussione Nadir Sampaoli
Ciao a tutti,

-- Messaggio inoltrato --

> From: Marco Beri 
> To: Discussioni generali sul linguaggio Python 
> Cc:
> Date: Fri, 4 Jan 2013 15:01:12 +0100
> Chiaro, ha perfettamente senso una volta che ci ragioni. Ma di getto fa
> specie...
>

Per me non ha molto senso; potreste chiarirmi il dubbio?
Il fatto è che se l'operazione la faccio su un mutable tramite un'altra
variabile, giustamente il risultato colpisce l'elemento referenziato del
mutable originale:
>>> mutable = [[2]]
>>> temp = mutable[0]
>>> temp += [3]
>>> temp
[2, 3]
>>> mutable
[[2, 3]]

Nel caso della tupla:

- a priori mi aspetto una cosa del genere:
>>> immutable = [2],
>>> temp = immutable[0]
>>> temp += [3]
Traceback (most recent call last):
...

Mentre in realtà succede:
>>> immutable = [2],
>>> temp = immutable[0]
>>> temp += [3]
>>> temp
[2, 3]
>>> immutable
([2, 3],)
- a posteriori me lo spiego con il fatto che la tupla di per sè resta
immutata in quanto contiene solo il riferimento alla lista (tipo un
puntatore?), mentre viene modificata la lista (forse "in place"? Così che
il simil-puntatore non cambia) che non è parte integrante (i.e. non viene
influenzata nell'immutabilità del contenitore).

Delle due, una:
o la lista viene modificata, mentre non viene modificata la tupla in sè
(nel senso che le modifiche alla lista non riguardano l'immutabilità della
tupla), e quindi non ci sono eccezioni;
oppure viene sì sollevata l'eccezione, ma allora la mia lista resta
intonsa.
Invece non si verifica nessuno di questi due comportamenti.

(Per quel che vale, il comportamento che avrebbe più senso, per me, è il
primo)

Ciao.
> Marco.
>

Ciao!

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