Forum
>>
Principianti
>>
Variazione sintassi da vers. 3.4 a 3.12
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Pietro Bruno Lancerotto |
2024-08-30 15:36:58 - Variazione sintassi da vers. 3.4 a 3.12
|
Dopo il lungo lavoro di cui a : http://www.python.it/forum/thread/6944/utilizzo-socket/?page=6#post-7078
perfettamente funzionante grazie all'aiuto ricevuto mi ritrovo con un problema di portatilità. Per comodità di distribuzione il programma è stato "compilato" ed installato su vari PC Il programma è un terminale da usare in abbinamento ad una RiceTrasmittente e quindi si usano i portatili in avanzo visto le situazioni abbastanza precarie dei servizi. Sui vari 64 bit nessun problema. Poi su un vecchio W7 32 bit ho optato per l'installazione di PYTHON ed utilizzo dei sorgenti direttamente; anche qui tutto OK Ma siccome l'appetito vien mangiando ho riesumato un PC W-XP e vi ho installato PYTHON 3.4 che dalle mie ricerche sembra essere l'ultima versione utilizzabile su tale S.O. Problema che appare mandando in esecuzione il tutto tramite un file Batch ================== C:\PACKET\TERM_RCS\SOURCES>python.exe C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs_support.py Traceback (most recent call last): File "C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs_support.py", line 14, in <module> import pkt_gui_rcs File "C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs.py", line 14, in <module>from utility import Delivery File "C:\PACKET\TERM_RCS\SOURCES\utility.py", line 14 if (instance := getattr(cls, inst_field, None)) is None: ^ SyntaxError: invalid syntax ============================ Quel := che funziona su 3.12 non funziona su 3.4 Nelle mie ricerche mi pare di aver capito che la sintassi sia camabiata dalla 3.8 Non ho però trovato una tabellina comparativa per poter fare almeno una prova Grazie anticipato per ogni tipo di aiuto --
Bruno L. |
|
Scritto da Pietro Bruno Lancerotto |
2024-08-30 15:52:47 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
Walrus Operator.
Trovato qui : https://www.programmareinpython.it/blog/python-38-le-novita-piu-importanti/ Quindi io dovrei rappezzare a ritroso questo pezzo if (instance := getattr(cls, inst_field, None)) is None: instance = orig_new(cls) if hasattr(cls, "__init__"): cls.__init__(instance, *args, **kwargs) delattr(cls, "__init__") setattr(cls, inst_field, instance) return instance Poi speriamo che sia l'unico inghippo [NdCM: modificata formattazione] --- Ultima modifica di ㎝ in data 2024-08-30 17:13:23 --- --
Bruno L. |
|
Scritto da ㎝ |
2024-08-30 16:04:31 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
Hai valutato se non ti convenga avviare il pc con un dongle linux lite aggiornato?
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da Pietro Bruno Lancerotto |
2024-08-30 16:34:39 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
No, e neanche ci penso
Se funziona così bene altrimenti non è di vitale importanza --
Bruno L. |
|
Scritto da Pietro Bruno Lancerotto |
2024-08-30 17:04:48 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
Pensando di aver capito che il tutto era dovuto ad una fantasiosa invenzione per risparmiare qualche carattere ho modificato così
#if (instance := getattr(cls, inst_field, None)) is None: instance = getattr(cls, inst_field, None) if instance is None: Naturalmente oltrepassa il punto ma si ferma qui msg = ['OUTCOME', f' Connessione con {self.svr} stabilita'] con questa indicazione msg = ['OUTCOME', f' Connessione con {self.svr} stabilita'] ^ SyntaxError: invalid syntax Il cappelletto è in corrispondenza dell'apice a fine parola " stabilita " Se avete qualche idea perchè non credo di riuscire ad arrivarci goooglando --
Bruno L. |
|
Scritto da ㎝ |
2024-08-30 17:15:03 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
if (instance := getattr(cls, inst_field, None)) is None: instance = orig_new(cls) if hasattr(cls, "__init__"): cls.__init__(instance, *args, **kwargs) delattr(cls, "__init__") setattr(cls, inst_field, instance) return instance senza walrus dovrebbe corrispondere a
instance = getattr(cls, inst_field, None) if instance is None: instance = orig_new(cls) if hasattr(cls, "__init__"): cls.__init__(instance, *args, **kwargs) delattr(cls, "__init__") setattr(cls, inst_field, instance) return instance THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da ㎝ |
2024-08-30 17:22:19 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
quella cosa f'...' si chiama f-string, ed è stata introdotta in python 3.7 https://docs.python.org/3.7/tutorial/inputoutput.html dovresti poter ottenere un risultato simile con msg = ['OUTCOME', ' Connessione con {0} stabilita'.format(self.svr)] (untested) THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da Pietro Bruno Lancerotto |
2024-08-31 16:58:48 - Re: Variazione sintassi da vers. 3.4 a 3.12
|
msg = ['OUTCOME', ' Connessione con {0} stabilita'.format(self.svr)] Funziona
Devo dire che questo lo posso capire I := per risparmare una riga e qualche carattere proprio no Rende meno immediata la comprensione del codice Poi uno lo sa e va bene così Ti ringrazio per il supporto --
Bruno L. |
Pagina: 1
Esegui il login per scrivere una risposta.