Re: [Python] Toglietemi un dubbio sugli scope delle variabili.

2024-05-23 Per discussione Yuri


Il 23/05/24 12:04, Gabriele Battaglia ha scritto:

Ciao a tutti.

Per favore, leggete questa affermazione e, per non rubarvi tempo 
prezioso, rispondetemi solo se è falsa e perchè.



Delle variabili e della loro visibilità all'interno di uno script 
python, io ho capito questo.



All'inizio dello script, a indentazione 0 diciamo, dopo aver importato 
i moduli e dichiarato le costanti, io scrivo



pippo=True


Bene. Dovrei aver detto che pippo è vero e l'ho detto a livello più 
basso del codice. Ora, se io non dichiaro altri pippo all'interno di 
funzioni o moduli, l'unico pippo della vita mia, dovrebbe essere e 
rimanere, quello assegnato a True, all'inizio.


Tipo, se 2000 righe dopo, e annidato all'interno di una selva di 
indentazioni, dentro un if al dodicesimo leivello di tab scrivo che



if pluto == "12345": pippo=False



Questo codice è dentro una funzione? Se è dentro una funzione, 
localmente crei una variabile pippo che sovrascrive l'altra ma uscito 
dalla funzione ritrovi l'originale. Mi pare se ne fosse discusso di 
recente. Se invece vuoi che questa pippo sia quella dell'inizio, devi 
usare global (o nonlocal ma con limiti) davanti oppure passarla come 
parametro.


In lettura, invece, funziona che trova la pippo che stava in alto e usa 
quel valore.


https://programnotes.altervista.org/ambiti-e-variabili-locali-e-globali/

Esempio chiarificatore:

>>> x = 15
>>> def funzione_esempio():
... x += 2
... return x
...
>>> print(funzione_esempio())
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 2, in funzione_esempio
UnboundLocalError: cannot access local variable 'x' where it is not 
associated with a value


MA:

>>> x = 15
>>> def funzione_esempio():
... x = 10
... return x
...
>>> print(funzione_esempio())
10
>>> x
15

MA:

>>> def funzione_esempio():
... y = x
... y = y + 2
... return y
...
>>> print(funzione_esempio())
17

https://www.programmareinpython.it/video-corso-python-base/12-variabili-globali-e-variabili-locali/

Quindi quando ridefinisci l'etichetta della variabile, come fai tu 
sopra, la crei localmente alla funzione ma uscito dalla funzione 
ritroverai la pippo iniziale.


In python le variabili sono delle etichette collegate a qualcosa. Quando 
entri in una funzione, le etichette che vengono create localmente sono 
nuove e dentro quella funzione. Avendo lo stesso nome, ovviamente, ti 
sarà impossibile richiamare delle etichette all'esterno. Se provi a 
modificare le etichette esterne usando il loro stesso valore (x += 2), 
Python prima crea la nuova etichetta x, poi prova a leggerla ma non è 
ancora assegnata a nulla, e quindi da l'errore sopra.






finito l'if, fatti eventuali return da mille funzioni, chiusi cicli 
while, loop vari, tutto quello che volete.


Dopo 5000 righe di codice, tornato a livello di indentazione 0.. Se 
vado a vedere il mio pippo...


Troverò sempre quello giusto? Cioè True se la condizione di 
pluto=="12345" non era vera, oppure False se lo era... ma la mia 
variabile pippo è sempre e solo quella.



Chiedo tutto ciò perchè ho uno script che fa più o meno questo, in 
termini generici, tuttavia la variabile non la leggo correttamente e 
non capisco cosa mi sfugga, da anni, in questa maledetta scemenza 
dello scope che dovrebbe essere proprio una sciocchezza, eppure, 
evidentemente sono più rincoglionito di quanto mi piaccia credere.



Grazie per il vostro aiuto.


Gabry.


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


Re: [Python] modo furbo per trovare pattern differenti in una stringa

2024-02-13 Per discussione Yuri

Ciao,

 se fai split sulla riga con separatore lo spazio e guardi quelle che 
cominciano con GX, non è meglio? Lì prendi quelli che cominciano per X, 
Y e Z. Ignori le righe che non servono (quelle che cominciano per ; ad 
esempio).


Con regexp, posso suggerirti questo:

https://stackoverflow.com/a/3533526/15822654

che sembra affrontare il tuo problema, cioè il match di token sparsi 
casualmente in una stringa.


Il 13/02/24 14:32, Perini Matteo ha scritto:

Ciao a tutti,
è da un po' che non scrivo.
Vi chiedo aiuto perchè sto cercando di leggere delle coordinate da un file 
Gcode.
Un esempio del testo da parsare è:
;LAYER:1
;MESH:untitled.stl
G0 F7200 X1298 Y1798 Z4
;TYPE:WALL-OUTER
G1 F1800 X702 Y1798 E1494.81223
G1 X702 Y1202 E2242.21834
G92 E0
G1 X1298 Y1202 E747.40611
G1 Y1798 X1298 E1494.81223
;TIME_ELAPSED:177.752007
;CHANGE;
;LAYER:2
;MESH:untitled.stl
G0 F7200 X1298 Y1798 Z6
;TYPE:WALL-OUTER
G1 F1800 X702 Y1798 E2242.21834
G92 E0
G1 X702 Y1202 E747.40611
non ho grossi problemi ad effettuare un parsing corretto ma lo sto facendo con 
vari if, elif, case,  ecc. cosa che non mi piace molto.
Stavo provando ad utilizzare le regex ma non sto riuscendo a fare quello che 
voglio (in modo pulito) ovvero identificare le coordinate X, Y e Z anche se in 
alcuni casi hanno posizioni invertite.
Vorrei anche attribuire un nome al gruppo identificato in modo da usarlo come 
dizionario.
Stavo usando alcuni pattern tipo ".*Z(?P\d+[.]?\d*)" che vanno bene per individuare le coordinate di 
un asse ma capita che le righe contengano x y e z oppure solo Z oppure 
solo x e y. Importante, in alcuni casi potrebbero essere anche in 
ordine differente tipo z y e x. Per ora i numeri dopo E e F posso 
trascurarli ma vi chiederei aiuto per riuscire ad ottenere le 
coordinate da ogni riga. se tutte le righe rispettassero lo stesso 
pattern non avrei problemi ma non so come affrontare soprattutto il 
problema di avere pattern diversi in ordine (quasi) random. Spero di 
essere stato abbastanza chiaro. Grazie a tutti Matteo




___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ringraziamento (era: Consiglio su web framework)

2023-09-11 Per discussione Yuri
In alternativa a certbot puoi usare dehydrated [1]. Se hai un webserver, 
ricordati che al cambio certificato entro qualche giorno devi fargli 
rileggere il file di conf per recepire il nuovo certificato. Oppure puoi 
automatizzare la catena web (indirizzo web, gestione url, redirect, 
certificati ssl, etc) con traefik [2] ma forse va un po' oltre le tue 
esigenze e basta qualche script di riavvio periodico.


[1]: https://github.com/dehydrated-io/dehydrated/
[2]: https://traefik.io/traefik/

Il 09/09/23 01:45, Andrea D'Amore ha scritto:

On Thu, 7 Sept 2023 at 14:30, Giuliano Curti  wrote:

in attesa di affrontare, e risolvere spero, il problema certificati e passare a 
https

letsencrypt [1] che puoi istallare sul sito del server con certbot [2]
e poi passi a gunicorn le opzioni `keyfile`, `certfile` e `ca_certs`
usando come valori i nomi dei file che ti ha istallato certbot.

[1]: https://letsencrypt.org/
[2]: https://certbot.eff.org/
[3]: https://docs.gunicorn.org/en/stable/settings.html#ssl




--
A.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

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


Re: [Python] Consiglio su web framework

2023-05-23 Per discussione Yuri

Ciao,

 oggigiorno è sempre meglio usare dei framework per motivi di 
sostenibilità e soprattutto di sicurezza.


Il 23/05/23 09:25, Giuliano Curti ha scritto:

Il mar 23 mag 2023, 08:35 Christian Strappazzon  ha scritto:

Ciao,


Ciao,


Il lun 22 mag 2023, 11:29 Giuliano Curti  ha
scritto:

Il lun 22 mag 2023, 11:09 Luca Bacchi  ha
scritto:

..

...


Buongiorno,

.


Potresti anche scriverla tutta in Python puro, le batterie per
interrogare sqlite e per mostrare una paginetta web sono incluse :-)


Ipotesi che non avevo scartato; devo solo capire le seconde batterie, 
le prime (SQLite) le ho trovate :-)


Se poi la complessità è tale da giustificare un framework web e un
orm, allora c'è l'imbarazzo della scelta!


No, quasi certamente la (nulla) complessità non giustifica strumenti 
più pesanti, cmq terrò aggiornati (anche perché avrò mille dubbi e 
domande da fare :-))).



Sani
Strap


Grazie, saluti,
Giuliano


___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su web framework

2023-05-22 Per discussione Yuri

https://www.fullstackpython.com/vuejs.html

https://testdriven.io/blog/developing-a-single-page-app-with-flask-and-vuejs/

Se invece ritieni che Vue.js sia eccessivo, puoi usare Flask con dei 
moduli per le form:


https://www.digitalocean.com/community/tutorials/how-to-use-and-validate-web-forms-with-flask-wtf

oppure flask direttamente:

https://www.digitalocean.com/community/tutorials/how-to-use-web-forms-in-a-flask-application

Il 21/05/23 22:46, Giuliano Curti ha scritto:

Buonasera a tutti,

vi chiedo un consiglio su un argomento che non ho mai affrontato.

Vorrei offrire via web(*) l'interrogazione di un db sqlite3; immagino 
che una soluzione possa essere PHP che però non conosco e non intendo 
affrontarlo.


Quindi, ecco la domanda: esiste qualche framework python che consenta 
la costruzione di una, massimo due form per interrogare il DB?


La funzione è solo quella, quindi più semplice e mirato è, meglio è.

Domanda di secondo livello: è possibile eventualmente farlo con solo 
codice python? qualche dritta in tal senso è gradita (così come 
qualsiasi altro consiglio su cose che neanche immagino :-).


Grazie dell'attenzione, un saluto a tutti.

(*) penso ad una soluzione fatta in casa  (il carico sarà, credo, 
molto, molto basso):

1) un raspberry 4 dedicato
2) accesso su ip pubblico via Noip o servizio analogo
3) motore sqlite3
4) lascerei aperte solo le porte web e ssh (accesso con chiavi)(**)
5) protezione (minimale) con fail2ban (la macchina non conterrà nessun 
dato sensibile e/o prezioso; l'unico rischio è che possa essere 
scalata da qualche malevolo e utilizzata per usi diversi)
6) penso a form che riproducono i campi della tabella; quelli 
compilati determinano i criteri di ricerca dei documenti.


(**) se troppo rischioso potrei anche chiudere la porta ssh; la 
macchina sarebbe raggiungibile via rete privata.



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

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


Re: [Python] Installare un pacchetto da un repository.

2022-11-08 Per discussione Yuri

Ciao,

 fai l'applicazione A che utilizza quel modulo. Poi, dopo tempo, fai 
un'applicazione B che usa una versione aggiornata del modulo e 
incompatibile con A.


 Gli ambienti virtuali servono a dividere le installazioni in modo da 
avere un ambiente controllato. Se nel tuo caso non ci sono problemi, usa 
pure lo stesso ambiente per tutto.


Il 08/11/22 11:44, iz4...@libero.it ha scritto:

Perché dovrei usare un ambientevirtuale? Che danni può fare, è solo un modulo 
che aggiunge funzioni che permettono di creare suoni. Se qualcosa dovesse 
andare storto, disinstallo tutto, anche Python e lo rimetto da 0.

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


Re: [Python] Errore durante installazione via pip.

2022-11-02 Per discussione Yuri

Il sito al quale si sta connettendo ha il certificato scaduto?

Il 02/11/22 15:43, iz4...@libero.it ha scritto:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self 
signed certificate in certificate chain

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


Re: [Python] I: R: R: Variabili su file esterno

2022-07-11 Per discussione Yuri

Sì, scusa. Devi scriverlo come:

variabili = {
'IPADDRESS': '192.168.1.2',
'NETMASK': '255.255.255.0',
'GATEWAY': '192.168.1.1'

}

con l'import il codice non viene eseguito, invece così la variabile è 
inizializzata e importabile al momento dell'import.


Il 11/07/22 15:43, Marcello Ilardi ha scritto:

  - Da: Python [mailto:python-boun...@lists.python.it] Per conto di Yuri
  - ma non bastava in dati.py fare:
  - from main import variabili


Ho provato, mi passa il dizionario, ma non i valori
print da main
{'Cliente': '23213', 'mac_address': ''}

print da fileConfig.py
{'Cliente': '', 'mac_address': ''}

Marcello


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

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


Re: [Python] R: R: Variabili su file esterno

2022-07-11 Per discussione Yuri

Scusa,

 forse non ho capito l'uso, ma non bastava in dati.py fare:

from main import variabili

?

Il 11/07/22 10:43, Marcello Ilardi ha scritto:


  - Da: Python [mailto:python-boun...@lists.python.it] Per conto di Massimo 
Masson
  - Hai provato a dare un'occhiata al modulo pickle?


Grazie, ho risolto così:

***
main.py
***
import pickle
variabili = {}
variabili['IPADDRESS'] = '192.168.1.2'
variabili['NETMASK'] = '255.255.255.0'
variabili['GATEWAY'] = '192.168.1.1'
with open ('dati.pickle','wb') as f:
pickle.dump(variabili, f)
import dati


*
dati.py
*
import pickle
with open('dati.pickle', 'rb') as f:
variabili = pickle.load(f)
variabili['configurazione'] = (f'''
net.static.IP = {variabili['IPADDRESS']}
net.static.SubnetMask = {variabili['NETMASK']}
net.static.Gateway = {variabili['GATEWAY']}
''')
print (variabili['configurazione'])



Ciao e grazie a tutti

Marcello




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

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


Re: [Python] Librerie private e condivisione del codice fra progetti

2022-06-16 Per discussione Yuri
pip ha una modalità solo download (pip download), il controllo lo puoi 
fare dopo il download con uno script e poi in caso positivo, fare 
l'installazione.


Il 16/06/22 09:15, Federico Fissore ha scritto:

Ciao

Yuri wrote on 16/06/22 08:59:
In generale i pacchetti dovrebbero/possono avere una firma, 
basterebbe controllare quella.



Se ti riferisci allo hash del pacchetto, ho provato a smanettare con 
il parametro "--hash" di "pip install" ma non sono riuscito a farlo 
funzionare


Il problema è che la mia libreria dipende da altre librerie, le cui 
versioni sono specificate con un range (non sono "pinned"). Quindi 
anche se la installo con


> mia-libreria==1.0.0 --hash=sha256:12345...

pip si arrabbia con

> In --require-hashes mode, all requirements must have their versions 
pinned with ==


federico
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

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


Re: [Python] Librerie private e condivisione del codice fra progetti

2022-06-16 Per discussione Yuri
In generale i pacchetti dovrebbero/possono avere una firma, basterebbe 
controllare quella.


Il 16/06/22 00:21, Giorgio Zoppi ha scritto:

Ciao,
Di solito nelle varie esperienze ho incontrato un repository pip 
privato. Tutti gli sviluppatori accendino solo quel repo per le 
dipendenze esterne e il gruppo di devops è responsabile di 
mantenerlo.  Mi sembra più che giusto aprire un ticket JIRA per 
aggiungere dipendenze all'ambiente controllato. Ogni developer ha una 
sandbox o un ambiente controllato di prova dove fa i suoi cambi e poi 
fa il push via git.
Di solito non si fa mai cut and paste nemmeno di codice che pushi tu 
perche non passerebbe la review. Se il codebase e' grande
si dividono i repository git  e si usa un meccanismo di integrazione 
dei repository in modo che non ci siano incongruenze. Tutto al giorno 
d'oggi passa attraverso una CI, spesso non si fa la CD, ma per 
questione proprio di grandezza o di impossibilita'.Non fai la CD di un 
prodotto come lo space shuttle perche per esempio la QA deve esistere 
ed essere formale. La CD si fa quando la si fa
o in un ambiente di pre produzione QA o direttamente sugli ambienti 
controllati di sviluppo/prova. Durante gli anni dipende dalle aziende 
la validazione del software e' un meccanismo automatico e 
responsabilità primaria dello sviluppatore. 80% unit test, 15% 
integration tests, 5% end2end tests.


Best Regards,
Giorgio

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

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


Re: [Python] File not found.

2022-05-26 Per discussione Yuri

Penso tu debba fare:

open(fn, "rt", encoding='utf-8')

Il 26/05/22 16:47, Gabriele Battaglia ha scritto:


Reply to Yuri's message, wrote on 26/05/2022 at 16:22:


Ciao,

 ci sarà un altro errore che fa scattare l'except. Prova ad eliminare 
il try/except ed esegui solo il blocco nel try, dovresti vedere 
l'errore.


 Solitamente conviene scrivere l'eccezione in maniera esplicita:

 except OSError:

 Se non è un errore sul file, allora vedrai il traceback e l'errore 
reale.




Grande Yuri, hai fatto centro, ma vorrei che fosse saltata fuori una 
cosa più semplice.


Avevi perfettamente ragione, l'errore l'ho visto, ma non ci capisco 
niente! Eccolo qui.


Me lo tradurresti? :)


***

e:\Dropbox\IZ4APU\CW>cwzer
    CWzer 1.0, may 26th, 2022 by Gabe, IZ4APU.
    This small utility takes a text file and prepare it to be 
converted

    in morse with other apps like Ebook2CW by DJ5CW.
Read 9 substitutions from file: CWzer_subs.txt
filename.ext to prepare? > r.txt
Traceback (most recent call last):
  File "E:\Dropbox\IZ4APU\CW\cwzer.py", line 38, in 
    rig = f.readlines()
  File 
"C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\encodings\cp1252.py", 
line 23, in decode

    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 
4141: character maps to 


e:\Dropbox\IZ4APU\CW>


L'unica cosa che posso aggiungere è che, almeno mi pare, il file r.txt 
che sto cercando di aprire con open(nomefile, "r") è in UTF8



Grazie se mi sai o vuoi dare una dritta.


Gabry.

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

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


Re: [Python] File not found.

2022-05-26 Per discussione Yuri

Ciao,

 ci sarà un altro errore che fa scattare l'except. Prova ad eliminare 
il try/except ed esegui solo il blocco nel try, dovresti vedere l'errore.


 Solitamente conviene scrivere l'eccezione in maniera esplicita:

 except OSError:

 Se non è un errore sul file, allora vedrai il traceback e l'errore reale.

Il 26/05/22 16:05, Gabriele Battaglia ha scritto:


Ciao di nuovo.


Ho questo codice:


fn= input("filename.ext to prepare? > ")
try:
f=open(fn, "rt")
rig= f.readlines()
f.close()
print(f"File: {fn}found, with {len(rig)}lines of text.")
except:
print(f"Sorry, file: {fn}not found.\nRelaunch the App and try with 
another filename.")

sys.exit()
Il file è certamente presente nella cartella dello script, ne sono 
ASSOLUTAMENTE certo. Eppure, non trova il file che gli chiedo.
Magari ne trova altri, ma quello che mi interessa, solleva l'eccezione 
e termina lo script. Quali ragioni possono esserci

Si tratta di tutti file di testo.
Il nome digitato è corretto.
Gabry
--
--... ...--  -.. .  .. --.. - .- .--. ..-  - ..-  . .
Sent from TB on Windows 10, Genus Bononiae's computer.

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Tutte le specifiche delle fstrings.

2022-05-26 Per discussione Yuri

Nella parte lessicale:

https://docs.python.org/3/reference/lexical_analysis.html#f-strings

"The format specifier mini-language is the same as that used by the 
str.format() method.". Quindi trovi le specifiche qui:


https://docs.python.org/3/library/string.html#formatstrings

dove trovi:

"|'^'| Forces the field to be centered within the available space."


Il 26/05/22 12:20, Gabriele Battaglia ha scritto:

Ciao.

Cerco la documentazione completa sulle f-strings, mi pare sia la 
PEP458? Non sono sicuro. In rete trovo articoli, esempi, ma non ho 
ancora individuato un singolo documento che mi riporti tutte le 
specifiche.


Mi dite con quale chiave dovrei cercare in Google, o qual è un 
riferimento buono?



In particolare adesso cercavo l'equivalente f-string di 
str.center(...) che non me lo ricordo. :)



Grazie per l'aiuto.


Gabry.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Indagine su una variabile.

2022-05-17 Per discussione Yuri

Ciao,

 serve, appunto, a segnalare che stai usando quella globale. Se cambi 
la tua funzione in modo che stampi solo d senza definirla, ti tornerà 1:


>>> def mo():
...  print(d)
...
>>> d=1
>>> mo()
1

Se invece vuoi modificarla, allora la devi definire localmente (ma resta 
lì) oppure usare global.


>>> def mo():
...  global d
...  d=2
...  print(d)
...
>>> d=1
>>> mo()
2
>>> d
2

>>> def mo():
...  d=2
...  print(d)
...
>>> d=1
>>> mo()
2
>>> d
1


Il 17/05/22 16:55, Gabriele Battaglia ha scritto:


Reply to Yuri's message, wrote on 05/05/2022 at 17:03:


Il 05/05/22 16:16, Gabriele Battaglia ha scritto:
Chiedo venia, so che non si dice così ma non mi viene un termine 
migliore, forse inspecting... :)



Comunque.

Ho una variabile dichiarata ad inizio script, del tipo: d={}


poi una routine la modifica, ovviamente ha lo stesso nome 
all'interno della funzione che non riceve () e non restituisce nulla 
con return.


All'uscita da questa funzione tuttavia, mi ritrovo d intatta, come 
se non avessi apportato alcuna modifica.


All'interno ti risulta modificata?
Ciao Yuri. Sì, è modificata.


Ti copio dalla console.


>>> def mo():
...     d=2
...     print(d)
...     return
...
>>> d
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'd' is not defined
>>> d=1
>>> d
1
>>> mo()
2
>>> d
1



Allora. parlando di scopes, io avevo capito che quando ti riferisci ad 
una variabile, Python crea una variabile locale se non ne esiste già 
una con lo stesso nome. Cioè, se la variabile a cui mi riferisco 
esiste già ed è stata creata da uno scope superiore, tipo il main in 
questo caso, allora usa quella.


A questo punto allora però la mia confusione cresce perchè non capisco 
più a cosa serva la chiave global



:)


Devo tornare a leggere le basi di Python. Povero me.

Gabry. :)

il mio consiglio è lanciare lo script via pdb (o la parte di script 
che interessa valutare). Puoi anche aprire un prompt interattivo di 
python e all'interno definire la tua variabile d e poi


>> from script import funzionemodificad

>> pdb.runcall(funzionemodificad)

in questo modo puoi vedere passo passo cosa succede. Alla fine della 
funzione torni al prompt e hai la tua variabile d, che puoi stampare 
con un print.






Come si indaga su un problema di questo genere? Io non riesco a 
trovare l'inghippo.



Grazie per il vostro sempre illuminante aiuto.


Gabry.



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



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


Re: [Python] Indagine su una variabile.

2022-05-06 Per discussione Yuri


Il 06/05/22 09:34, Yuri ha scritto:

Ciao,

 se non si modifica la variabile all'interno della funzione, si può 
usare la variabile esterna:


>>> d = 0
>>> def test():
...   print(d)
...
>>> test()
0

Se invece si tenta di modificarla:

>>> def test():
...  print(d)
...  d = 1
...
>>> d = 0
>>> test()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 2, in test
UnboundLocalError: local variable 'd' referenced before assignment


Scusate, ovviamente qui l'errore è dovuto al fatto che uso d e poi la 
ricreo localmente. Qui python vede l'assegnazione e decide che la 
variabile è locale, quindi quando esegue il codice vede un riferimento a 
d prima che questa venga creata localmente. Se invece facessi solo 
"print(d)" o "d=1", l'errore non ci sarebbe stato perché o usa solo il 
valore globale o crea una nuova variabile locale.





Ci pare di capire che Gabriele vuole modificarla ma non ottiene 
l'errore, e quindi potrebbe essere questa la situazione:


>>> d = {}
>>> def test():
...  d[0] = 1
...
>>> test()
>>> d
{0: 1}

qui non viene dato errore perché d non viene modificata ma solo usata 
come puntatore al contenuto del dizionario.


Magari con queste informazioni Gabriele ha un quadro più chiaro.

Gabriele: puoi mostrarci il codice o almeno la parte essenziale?

Il 06/05/22 08:44, Luigi Russo ha scritto:


Il 05/05/2022 16:16, Gabriele Battaglia ha scritto:
Chiedo venia, so che non si dice così ma non mi viene un termine 
migliore, forse inspecting... :)



Comunque.

Ho una variabile dichiarata ad inizio script, del tipo: d={}


poi una routine la modifica, ovviamente ha lo stesso nome 
all'interno della funzione che non riceve () e non restituisce nulla 
con return.


All'uscita da questa funzione tuttavia, mi ritrovo d intatta, come 
se non avessi apportato alcuna modifica.



Come si indaga su un problema di questo genere? Io non riesco a 
trovare l'inghippo.


Gigi:


Ciao Gabriel,

se intendi modificare la variabile globale d dovrai inserire nella 
funzione la parola chiave global, esempio:



d = {}


def modificad():

    global d

d = {'Cane': 'Bau'}


print(d)


Ciao da Gigi

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

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

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


Re: [Python] Indagine su una variabile.

2022-05-06 Per discussione Yuri

Ciao,

 se non si modifica la variabile all'interno della funzione, si può 
usare la variabile esterna:


>>> d = 0
>>> def test():
...   print(d)
...
>>> test()
0

Se invece si tenta di modificarla:

>>> def test():
...  print(d)
...  d = 1
...
>>> d = 0
>>> test()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 2, in test
UnboundLocalError: local variable 'd' referenced before assignment

Ci pare di capire che Gabriele vuole modificarla ma non ottiene 
l'errore, e quindi potrebbe essere questa la situazione:


>>> d = {}
>>> def test():
...  d[0] = 1
...
>>> test()
>>> d
{0: 1}

qui non viene dato errore perché d non viene modificata ma solo usata 
come puntatore al contenuto del dizionario.


Magari con queste informazioni Gabriele ha un quadro più chiaro.

Gabriele: puoi mostrarci il codice o almeno la parte essenziale?

Il 06/05/22 08:44, Luigi Russo ha scritto:


Il 05/05/2022 16:16, Gabriele Battaglia ha scritto:
Chiedo venia, so che non si dice così ma non mi viene un termine 
migliore, forse inspecting... :)



Comunque.

Ho una variabile dichiarata ad inizio script, del tipo: d={}


poi una routine la modifica, ovviamente ha lo stesso nome all'interno 
della funzione che non riceve () e non restituisce nulla con return.


All'uscita da questa funzione tuttavia, mi ritrovo d intatta, come se 
non avessi apportato alcuna modifica.



Come si indaga su un problema di questo genere? Io non riesco a 
trovare l'inghippo.


Gigi:


Ciao Gabriel,

se intendi modificare la variabile globale d dovrai inserire nella 
funzione la parola chiave global, esempio:



d = {}


def modificad():

    global d

d = {'Cane': 'Bau'}


print(d)


Ciao da Gigi

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

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


Re: [Python] Indagine su una variabile.

2022-05-05 Per discussione Yuri


Il 05/05/22 16:16, Gabriele Battaglia ha scritto:
Chiedo venia, so che non si dice così ma non mi viene un termine 
migliore, forse inspecting... :)



Comunque.

Ho una variabile dichiarata ad inizio script, del tipo: d={}


poi una routine la modifica, ovviamente ha lo stesso nome all'interno 
della funzione che non riceve () e non restituisce nulla con return.


All'uscita da questa funzione tuttavia, mi ritrovo d intatta, come se 
non avessi apportato alcuna modifica.


All'interno ti risulta modificata?

il mio consiglio è lanciare lo script via pdb (o la parte di script che 
interessa valutare). Puoi anche aprire un prompt interattivo di python e 
all'interno definire la tua variabile d e poi


>> from script import funzionemodificad

>> pdb.runcall(funzionemodificad)

in questo modo puoi vedere passo passo cosa succede. Alla fine della 
funzione torni al prompt e hai la tua variabile d, che puoi stampare con 
un print.






Come si indaga su un problema di questo genere? Io non riesco a 
trovare l'inghippo.



Grazie per il vostro sempre illuminante aiuto.


Gabry.



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


Re: [Python] Aggiornamento versione Python e installazione librerie.

2022-03-08 Per discussione Yuri

Utilizza virtualenv

Il 08/03/22 10:14, Gabriele Battaglia ha scritto:

Ciao.

Ogni volta che installo una nuova versione di Python, devo 
obbligatoriamente reinstallare anche tutte le librerie che utilizzo 
nei miei scripts. Se una volta si trattava di 2 o 3 librerie, adesso 
iniziano a diventare molte, non me le ricordo tutte e le scopro 
soltanto quando ho bisogno di qualcosa e vedo gli errori.



Possibile che non esista un modo di aggiornare Python portandosi 
dietro tutto quanto si è installato e configurato nel tempo?



Parlo della versione 3.x su Windows 11.


Grazie.

Gabry.


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


Re: [Python] while... perchè?

2022-02-15 Per discussione Yuri

>>> yi,yk=0,0
>>> while yi<2:
...   while yk<5:
... print(yi,yk)
... yk+=1
...   yi+=1
...
0 0
0 1
0 2
0 3
0 4
>>> yi,yk=0,0
>>> while yi<2:
...   yk=0 <- qui
...   while yk<5:
... print(yi,yk)
... yk+=1
...   yi+=1
...
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
>>>

Il 15/02/22 14:18, Gabriele Battaglia ha scritto:


Reply to Yuri's message, wrote on 15/02/2022 at 14:08:


yk non viene mai azzerato



Yuri, intanto grazie per la risposta... Ti prego, porta pazienza: che 
vuol dire che non viene mai azzerato?


E' posto a 0 all'inizio:

yi,yk=0,0

Poi, secondo quel po che capisco di Python, va incrementato di 1 
finché la condizione per rimanere nel primo while non è più vera, cioè 
quando yi diventa >=2



Però io sono un programmatore della mutua! Aahahaha, aiutami a capire 
l'acqua calda che mi sfugge. :)




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


Re: [Python] while... perchè?

2022-02-15 Per discussione Yuri

yk non viene mai azzerato

Il 15/02/22 14:04, Gabriele Battaglia ha scritto:


Questo semplice script con 2 while annidati:


#testwhile
yi,yk=0,0
whileyi<2:
whileyk<5:
print(yi,yk)
yk+=1
yi+=1
output:
e:\Dropbox\py>testwhile 0 0 0 1 0 2 0 3 0 4 e:\Dropbox\py>
Ma sogno o son desktop?
Perchè la yi non diventa 1 e fa ripetere una seconda volta, il ciclo 
più interno?

Gabry.
--
--... ...--  -.. .  .. --.. - .- .--. ..-  - ..-  . .
Sent from TB on Windows 10, Genus Bononiae's computer.

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Append

2022-01-13 Per discussione Yuri

Se trovi una libreria che supporta

FALLOC_FL_INSERT_RANGE

potresti farlo con le normali operazioni. Altrimenti è molto complicato, 
conviene ripensare, se possibile, la strategia per i dati. Qual è la 
tipologia di problema?


Il 13/01/22 09:16, Gabriele Battaglia ha scritto:

Ciao.

Esiste un modo per aprire un file in modalità append ma... facendo sì 
che il contenuto aggiunto vada all'inizio, e non appeso in fondo al file?


Grazie e buon anno a tutti.

Gabry.


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


Re: [Python] Chiarimento sugli iteratori

2021-09-20 Per discussione Yuri
Nel primo caso consumi un iteratore già esausto, per cui ovvio che non 
torni nulla. Nel secondo invece ne crei un secondo.


test è un generatore (usa yeld) e quindi anche un iteratore.

Qui la differenza tra generatori e iteratori

https://stackoverflow.com/questions/2776829/difference-between-pythons-generators-and-iterators

Il 17/09/21 16:57, Valerio Pachera ha scritto:

Buongiorno a tutti, ho notato questa cosa:

#!/usr/bin/env python3

def test():
 for x in range(0, 10):
 yield x

iterator = test()

print(test)

for x in iterator:
 print(x)

for x in iterator:
 print(x)

-

Restituisce


0
1
2
3
4
5
6
7
8
9

---

Mentre se modifico lo script con

for x in test():
 print(x)

for x in test():
 print(x)

---

Ottengo


0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

---

Nella mia testa pensavo fosse indifferente richiamare "iterator"
anziché "test()".
Se verifico il tipo di dato ottengo

iterator = test()
print(type(test))



--

Non mi è chiarissimo il motivo per cui, al secondo ciclo for non viene
restituito alcun dato.
Sapete darmi una dritta?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

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


Re: [Python] [Python3] virtualenv aggiornato su vecchia distro

2021-05-31 Per discussione Yuri

/usr/local/lib/python3.5/dist-packages/pip/

cancella pip da lì e reinstallala con

|sudo apt install python3-pip In generale, puoi sempre ripartire da 
zero: https://packaging.python.org/tutorials/installing-packages/ If pip 
isn’t already installed, then first try to bootstrap it from the 
standard library: Unix/macOS python3 -m ensurepip --default-pip If pip 
isn’t already installed, then first try to bootstrap it from the 
standard library: python3 -m ensurepip --default-pip If that still 
doesn’t allow you to run python -m pip: Securely Download get-pip.py Run 
python get-pip.py. This will install or upgrade pip. Additionally, it 
will install setuptools and wheel if they’re not installed already. 
Insomma, se ne esce :-) |


Il 31/05/21 14:38, Valerio Pachera ha scritto:

Grazie per le risposte.
Avevo valutato (velocemente) se usare virtualenv o venv e la mia 
scelta era ricaduta sul primo perché ha alcune funzionalità in più, in 
particolare, paragonato a virtualenv
https://virtualenv.pypa.io/en/latest/ 

"cannot create virtual environments for arbitrarily installed python 
versions (and automatically discover these),"


Il vero problema che sto cercando di aggirare è questo (su ubuntu 16.04):

pip3 --version
Traceback (most recent call last):
File "/usr/bin/pip3", line 11, in 
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 
12, in main

from pip._internal.utils.entrypoints import _wrapper
File 
"/usr/local/lib/python3.5/dist-packages/pip/_internal/utils/entrypoints.py", 
line 4, in 

from pip._internal.cli.main import main
File 
"/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py", 
line 58

sys.stderr.write(f"ERROR: {exc}")
^
SyntaxError: invalid syntax

notare che avendo pip3 "rotto" di suo, non posso neanche usarlo per 
installare altri moduli nel virtual env.


Ho provato quindi ad installare una versione specifica di pip:
https://stackoverflow.com/questions/66212924/pip-sys-stderr-writeferror-exc-with-python-3-5 



Ho installato
apt-get install python3-venv

e provato a creare e attivare il virtual env
python3 -m venv venv
source venv/bin/activate

Installo con successo i moduli che mi servono:
pip3 install htmlentities Jinja2 ldap3 python-zimbra six

eseguo il mio script e va in crisi su qualcosa relativo a Jinja2

./myscript.py -h
Traceback (most recent call last):
File "./myscript.py", line 7, in 
from jinja2 import Environment, FileSystemLoader
File 
"/opt/Custom/myscript/venv/lib/python3.5/site-packages/jinja2/__init__.py", 
line 5, in 

from .bccache import BytecodeCache as BytecodeCache
File 
"/opt/Custom/myscript/venv/lib/python3.5/site-packages/jinja2/bccache.py", 
line 61

self.code: t.Optional[CodeType] = None
^
SyntaxError: invalid syntax

Controllo la variabile d'ambiente

echo $PATH
/opt/Custom/ss-signatures/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

E qua credo proprio che l'interprete sia troppo vecchio.

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


Re: [Python] [Python3] virtualenv aggiornato su vecchia distro

2021-05-31 Per discussione Yuri

pip freeze > requirements.txt

nel tuo portatile

e poi in ubuntu 16.04 crei un venv con python 3.5 e fai pip install 
requirements.txt


Per spostare un venv bisogna editare un sacco di file, si fa prima a far 
così.


Come suggeriscono, usa python3 -m venv  per creare il virtualenv.

Il 31/05/21 12:53, Valerio Pachera ha scritto:

Buongiorno a tutti, mi trovo nella seguente situazione:
ho una ubuntu 16.04 con python 3.5 e devo far girare una script che 
richiede vari moduli aggiornati (tra cui Jinja2).


Sul mio portatile ho creato, tramite virtualenv, un ambiente 
comprensivo di tali moduli e python3.8 (opzione --always-copy) per poi 
scoprire che il virtualenv non è "portabile".

Esso infatti usa dei percorsi assoluti.

Facendo una ricerca trovo menzionata l'opzione --relocatable ma che 
non trovo nel --help
https://stackoverflow.com/questions/32407365/can-i-move-a-virtualenv 



virtualenv --version
virtualenv 20.4.7 from 
/usr/local/lib/python3.8/dist-packages/virtualenv/__init__.py


virtualenv --help | grep reloc

L'altra strada sarebbe quella di creare il virtualenv direttamente 
sulla ubuntu 16.04 ma non saprei come fare a generare un virtualenv 
con la versione 3.8 (o 3.9) di python.


Immagino che il primo suggerimento sia "aggiorna la ubuntu" e avete 
ragione, ma esiste la possibilità di avere un virtualenv con python 
aggiornato su una distro vecchia?


Grazie in anticipo :-)



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


Re: [Python] Insiemi

2021-05-26 Per discussione Yuri
I set di python servono per operazioni comuni, ma non sono una 
implementazione matematica degli insiemi. Forse SimPy è quello che cerchi?


https://docs.sympy.org/latest/modules/sets.html#compound-sets

Il 25/05/21 21:30, Bruno Firmani ha scritto:

Grazie Federico,
ma a me sembra una lacuna. Forse uso abitualmente software CAS.

Ciao
Bruno

Il giorno 25 mag 2021, alle ore 19:45, Federico Cerchiari 
 ha scritto:



Ciao Bruno,

questo comportamento dell'interprete deriva dal fattto che in ss1 ed 
ss3, nel momentto in cui True viene inserito nel set, è già presente 
un oggetto con "valore" 1 nello stesso set.
Questo perchè i set (come le chiavi dei dizionari) sono collezioni di 
"hashabili", gli hashabili sono oggetti di cui può essere calcolatto 
l'hash, e l'hash è un numero intero che identtifica il "valore" 
dell'oggetto.


In questo caso, sia "True" che "1" hanno hash di valore 1:
>>> hash(True)
1
>>> hash(1)
1
>>> hash(True) == hash(1)
True
>>> True == 1
True

Entrambi True e 1 "valgono" 1, al momento dell'inserimento in un 
insieme, Python fa questo ragionamento: "esiste già un elemento che 
"vale" come questo?", e in ss1 ed ss3, la risposa è sì. Lo stesso 
vale in entrambi i versi:

>>> { 1 , True }
{1}
>>> { True, 1 }
{True}

Il comportamento è un false friend, ma deriva da come è implemenato 
il metodo __hash__ alla base dell'interprete. Lo setsso vale per 
False e 0:

>>> { False, 0 }
{False}

I due bool, ed 1 e 0, hanno lo stesso "valore" per l'interprete, pur 
essendo "cose" diverse:

>>> True is 1
False

Ciao
Federico

Il giorno mar 25 mag 2021 alle ore 19:27 Bruno Firmani 
mailto:firmanibr...@gmail.com>> ha scritto:


Buonasera,
sto incontrando questa difficoltà.

Sto imparando.

Alle istruzioni:

ss0 = { 2<=2 , 5 >= 3 }
ss1 = { 1 , 2 , 3 , 4 , '4' , '5' , 'a' , 'b' , 'c' , 3 , '3' , 4
, '4' , False , 2<=2 , 5 >= 3 }
ss2 = { 1 ,11 , 'a' , 'ab' , 'abc' }
ss3 = { 1 , 2 , 3 , 2 , 3 , 3 , 'a' , 'b' , 'c' , 'b' , 'c' , 'c'
, False , 2<=2 , 5 >= 3 }

print('ss0 = ' , ss0)
print('ss1 = ' , ss1)
print('ss2 = ' , ss2)
print('ss3 = ' , ss3)

ottengo come risposta:

ss0 =  {True}
ss1 =  {False, 1, 2, 3, 4, '5', '3', 'b', 'c', '4', 'a'}
ss2 =  {1, 'abc', 11, 'ab', 'a'}
ss3 =  {False, 1, 2, 3, 'b', 'c', 'a'}


In "ss0" compare "True" che invece non viene evidenziato in "ss1"
e in "ss3".
Non so spiegarmi questo fenomeno.

Cordiali saluti
Bruno Firmani





       Bruno Firmani
   Via Giannantonio Manci 5 - 39100 BOLZANO
e.mail firmanibr...@gmail.com 
mlbf1...@gmail.com 
tel.   +39 338 5721755 (cellulare)
fax    +39 02 70039544
___
Python mailing list
Python@lists.python.it 
https://lists.python.it/mailman/listinfo/python


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


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

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


[Python] brython

2021-05-13 Per discussione Yuri

https://brython.info/static_doc/en/intro.html

Per gli amanti del genere :-)

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


Re: [Python] Visualizzare una struttura dati annidata, anche con molti elementi

2021-03-30 Per discussione Yuri

Salve,

 mi piacerebbe qualcosa di interattivo, attualmente uso già prettyprint 
e pp in pdb. I dati sono nativi, tranne una classe che ho creato. L'idea 
era quella di avere uno strumento che permetta di "aprire/chiudere" i 
nodi della struttura dati, ed esplorarla.


In effetti, per ora, potrei fare un dump in json (rendendo la mia classe 
serializzabile in JSON usando https://stackoverflow.com/a/41200652) e 
utilizzare un editor di testo con supporto JSON. Grazie del suggerimento!


def serialize(obj):
    """JSON serializer for objects not serializable by default json code"""

    if isinstance(obj, Arianna):
    return obj.titles

(Pdb) !w = json.dumps(ead.archive, sort_keys=True, indent=2, 
default=serialize)

(Pdb) !a = open('/tmp/orto.json', 'w')
(Pdb) !a.write(w)
86489
(Pdb) !a.close()


Il 30/03/21 15:26, a.cava...@cavallinux.eu ha scritto:

Se i dati sono nativi (liste, tuple, ineri, float etc.) puoi usare:
   print(json.dumps(oggetto, sort_keys=True, indent=2))

On Tuesday, March 30, 2021 04:27 EDT, Yuri  wrote:
  

Salve,

   avrei bisogno, ai fini di debug/controllo, poter visualizzare una
struttura dati con molti elementi. Tipicamente sono dizionari e liste
annidate, alcune con pochi elementi, altri con molti, fino a 5/6 livelli
di annidamento. Alcune liste possono essere molto lunghe con centinaia o
migliaia di elementi. La classica soluzione con i [+] per espandere i
vari nodi della struttura va bene.

Ho visto che pudb ha uno strumento simile (*) ma la finestra è piccola e
dopo un po' diventa complesso navigare la struttura. Va bene sia uno
strumento a caratteri che uno grafico, con preferenza a caratteri se
possibile.


(*) interessante anche perché permette di scegliere la funzione che
rappresenta l'oggetto. Su pudb:
http://heather.cs.ucdavis.edu/~matloff/pudb.html

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

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

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


[Python] Visualizzare una struttura dati annidata, anche con molti elementi

2021-03-30 Per discussione Yuri

Salve,

 avrei bisogno, ai fini di debug/controllo, poter visualizzare una 
struttura dati con molti elementi. Tipicamente sono dizionari e liste 
annidate, alcune con pochi elementi, altri con molti, fino a 5/6 livelli 
di annidamento. Alcune liste possono essere molto lunghe con centinaia o 
migliaia di elementi. La classica soluzione con i [+] per espandere i 
vari nodi della struttura va bene.


Ho visto che pudb ha uno strumento simile (*) ma la finestra è piccola e 
dopo un po' diventa complesso navigare la struttura. Va bene sia uno 
strumento a caratteri che uno grafico, con preferenza a caratteri se 
possibile.



(*) interessante anche perché permette di scegliere la funzione che 
rappresenta l'oggetto. Su pudb: 
http://heather.cs.ucdavis.edu/~matloff/pudb.html


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


Re: [Python] with... as...

2021-03-18 Per discussione Yuri
with su una risorsa chiama __enter__ all'inizio e __exit__ su questa 
risorsa quando si esce dal blocco.


>>> a = 1
>>> with a:
...  printa(a)
...
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: __enter__
>>>

il risultato di open torna un oggetto che supporta __enter__ e __exit__

Questo meccanismo si può generalizzare tramite i contextmanager:

https://book.pythontips.com/en/latest/context_managers.html


Il 17/03/21 22:33, Franky Bonanno ha scritto:
with vedilo come. qualcosa che ti fa risparmiare del tempo, ad esempio 
se apri un file in scrittura e dimentichi di chiuderlo, hai buone 
probabilità di corromperlo. Con with, una volta finite le operazioni 
sull'ipotetico file, questi viene chiuso automaticamente.
Per quanto riguarda as, oltre quello che asseriva Tex, immagina una 
cosa del genere: with open("supercalifragilistichespiralidoso.txt) as sp.

sp.readlines.

Il mer 17 mar 2021, 21:50 Marco Beri > ha scritto:


On Wed, 17 Mar 2021, 21:41 Vittorio Arturi,
mailto:vittorio.art...@gmail.com>> wrote:

"As" dovrebbe essere (se non sbaglio) un alias: converti il
nome di una variabile o una libreria in un nome piú piccolo,
sintatticamente piú memorizzabile e piú "usabile" nel tuo script.
Scrivo col beneficio del dubbio essendo un neofita assoluto.


Non solo per comodità.

Ammettiamo che devi importare due moduli utils, uno dalla libreria
ceppa e l'altro dalla libreria dimao. Come fai?

from ceppa import utils as ceppa_utils
from dimao import utils as dimao_utils

Ciao.
Marco.

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



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


Re: [Python] Domanda da super niubbo sui generatori.

2021-03-10 Per discussione Yuri

Ecco il codice che può essere più esemplificativo della mail precedente:

Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> filesys = os.walk(os.getcwd())
>>> list(filesys)
[('/tmp/test', ['a'], ['b.txt']), ('/tmp/test/a', [], [])]
>>> a = list(filesys) <- filesys è stato già consumato, quindi non 
tornerà più nulla.

>>> print(a)
[]
>>> filesys = os.walk(os.getcwd())
>>> a = list(filesys)
>>> a
[('/tmp/test', ['a'], ['b.txt']), ('/tmp/test/a', [], [])]
>>>

quindi os.walk crea un generatore, e quindi è una funzione di tipo 
generatore. Mentre il risultato della chiamata è un iteratore, cioè una 
cosa su cui puoi fare next e compagnia. Una funzione che utilizzi yeld è 
un generatore, ad esempio.


Ricapitolando:

- ogni volta che chiami il generatore os.walk crei un iteratore

Il 10/03/21 09:03, Gabriele Battaglia ha scritto:

Buondì.
Sono nuovissimo nell'uso dei generatori, non li ho mai studiati ne 
usati prima.

Ora devo colmare questa laguna d'ignoranza, la "g" non è un refuso! :)
Vi chiedo 2 sciocchezze, per favore rispondete col metodo AIAF: As I 
am Five... si scriverà così? :)


Dunque, ho questo generatore qui:

import os
filesys = os.walk(os.getcwd())

So che posso fare una cosa del tipo:

for root, folders, files in filesys:
  print(f"Root is {root}")
  ...eccetera eccetera.

Ma se volessi sapere solo la root e basta, come la tirerei fuori dal 
generatore?
O, in altre parole, esiste solo il ciclo for, che mi permette diciamo 
di guardarci dentro?


Grazie.
Gabry.


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


Re: [Python] Domanda da super niubbo sui generatori.

2021-03-10 Per discussione Yuri

Ciao,

 puoi semplicemente fare list(filesys) e ottenere una lista con tutto 
dentro. list "consuma" il generatore, mettendo i risultati nella lista.


Il 10/03/21 09:03, Gabriele Battaglia ha scritto:

Buondì.
Sono nuovissimo nell'uso dei generatori, non li ho mai studiati ne 
usati prima.

Ora devo colmare questa laguna d'ignoranza, la "g" non è un refuso! :)
Vi chiedo 2 sciocchezze, per favore rispondete col metodo AIAF: As I 
am Five... si scriverà così? :)


Dunque, ho questo generatore qui:

import os
filesys = os.walk(os.getcwd())

So che posso fare una cosa del tipo:

for root, folders, files in filesys:
  print(f"Root is {root}")
  ...eccetera eccetera.

Ma se volessi sapere solo la root e basta, come la tirerei fuori dal 
generatore?
O, in altre parole, esiste solo il ciclo for, che mi permette diciamo 
di guardarci dentro?


Grazie.
Gabry.


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


[Python] [Tkinter] settare valore spinbox

2007-02-11 Per discussione yuri refolo
salve a tutti: sto cercando di capire come riuscire a settare il valore di 
uno spinbox sotto tkinter.

per sapere quale valore è stato scelto c'è get(), ma per settarlo...?

grazie preventivamente a chiunque sia in grado di aiutarmi.

yuri refolo


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