Python è un linguaggio per la programmazione e lo scripting implementanto sotto licenza Open Source; una delle sue caratteristiche più rilevanti è quella di essere multi-purpose e multi-paradigma, questo significa che potrà essere utilizzato per scopi tra loro differenti e sfruttando diversi approcci per lo sviluppo delle applicazioni basate su di esso.
Per quanto riguarda gli ambiti di utilizzo di Python, lo si potrà impiegare sia per la creazione di software destinati all'installazione su terminale che per la realizzazione di soluzioni per il Web; dal punto di vista dei paradigmi di riferimento, esso si basa innanzitutto sulla programmazione orientata agli oggetti (paradigma Object Oriented), ma prevede anche costrutti derivanti dall'approccio funzionale e da quello imperativo.
Python è inoltre un linguaggio multi-piattaforma, è stato infatti concepito per poter essere impiegato su tutti i sistemi operativi più diffusi, Windows, distribuzioni basate sul Kernel Linux e (Mac) OS X. La sintassi di questo linguaggio, pensata per essere il più possibile essenziale, ricorda in parte quella di una soluzione come Perl, ma per la sua concezione sono stati utilizzati anche costrutti mediati da C, C++ e Java; da parte sua, invece, Python ha influenzato in vario modo la progettazione di altri linguaggi ampiamente utilzzati, e spesso destinati a contesti differenti, come Java, Ruby e addirittura Swift, strumento creato di recente da Apple per la creazione di applicazioni destinate a iOS e il già citato (Mac) OS X.
Python mette a disposizione dello sviluppatore un sistema automatizzato per la gestione della memoria, ciò limita il verificarsi di fenomeni legati all'overhead, con un conseguente risparmio sulle richieste di risorse accessorie, e il verificarsi di memory leak (o fuoriuscite di memoria) per evitare livelli di consumo eccessivi nell'esecuzione degli script. A ciò si aggiunga la presenza di una libreria integrata concepita per migliorare la produttività e un meccanismo avanzato per la gestione delle eccezioni, cioè gli esiti imprevisti, in alcuni casi veri e propri errori, derivanti dall'esecuzione delle applicazioni.
A differenza di alcune delle alternative disponibili, Python si caratterizza inoltre per il fatto di essere un linguaggio semplice da imparare permettendo anche agli sviluppatori alle prime armi di diventare rapidamente operativi per l'implementazione di applicazioni basilari; ciò è dovuto al fatto che tale strumento è dotato di una sintassi particolarmente intuitiva e il codice sorgente prodotto attraverso di esso risulterà facilmente leggibile. Questo è uno dei motivi per cui Python risulta particolarmente adatto per lo sviluppo di progetti in ambito collaborativo.
Guido van Rossum, lo sviluppatore olandese che all'inizio degli anni '90 creò il linguaggio Python, scelse questo nome non ispirandosi alla nota specie di rettili, ma al gruppo comico britannico Monty Python e alla loro trasmissione televisiva, il Monty Python's Flying Circus; la sua idea era quella di offrire uno strumento modulare che unisse la semplicità dei costrutti alla possibilità di realizzare applicazioni anche molto complesse. La gratuità del linguaggio, unita alla sua licenza permissiva e alla robustezza sintattiche ottenuta rinunciando alle macchinosità, hanno reso Python uno strumento utilizzato universalmente; siti Web ad altissimo traffico come per esempio YouTube, sono stati realizzati adottando Python.
Ma Python si caratterizza anche per essere un linguaggio pseudocompilato, questo significa che ad occuparsi dell'analisi (parsing) dei codici sarà un apposito interprete messo a disposizione nativamente dal linguaggio; tale interprete dovrà quindi verificare la correttezza sintattica dei sorgenti ed eseguirli. In sostanza Python non da vita a dinamiche presenti in altri linguaggi, si pensi per esempio a C, per i quali viene richiesta una compilazione del codice per la generazione di file eseguibili. Tra i vantaggi della precompilazione vi è sicuramente la portabilità, infatti un sorgente scritto su una piattaforma (si ipotizzi Windows) potrà essere successivamente intepretato su un sistema operativo differente (ad esempio una distribuzione Linux) con l'unico vincolo derivante dalla versione utilizzata del linguaggio.
Python è un linguaggio di programmazione popolare e versatile, utilizzato in una vasta gamma di applicazioni, dalla sviluppo web all'analisi dei dati, dall'intelligenza artificiale all'automazione di script. Con la sua sintassi semplice e leggibilità, Python è una scelta ideale per chiunque voglia imparare a programmare. Questo articolo fornisce una guida dettagliata su come installare Python su Linux, Mac e...
Di default, Python offre un potente strumento per la programmazione denominato IDLE. Esso mette a disposizione un'interfaccia grafica con la quale lanciare istruzioni basate sul linguaggio e creare file eseguibili con estensione .py.
Vengono inoltre fornite funzionalità avanzate per incrementare il livello di produttività delle sessioni di sviluppo, come per esempio i suggerimenti per il completamento delle istruzioni, l'evidenziazione del...
Introduzione alle Variabili in Python
Le variabili sono tra i costrutti fondamentali in quasi tutti i linguaggi di programmazione, inclusi Python. Esse nascono dall'esigenza di riservare uno spazio di memoria in cui memorizzare dinamicamente informazioni. Questa operazione di memorizzazione diretta dei dati consiste fondamentalmente nell'assegnazione di un valore a una variabile.
Per comprendere il funzionamento di questo processo di assegnazione, è...
Gli operatori non sono un'esclusiva di Python, in generale tutti i linguaggi di programmazione e sviluppo dispongono di questi costrutti sintattici; è possibile definirli come dei simboli attraverso i quali specificare quale regola dovrà essere applicata a degli operandi per l'ottenimento di uno determinato risultato.
Gli operatori possono, per esempio, determinare un'assegnazione, ne sono stati descritti alcuni di questo tipo...
Come la maggior parte dei linguaggi di programmazione e sviluppo, anche Python mette a disposizione dei programmatori i cosiddetti costrutti condizionali; in sostanza, si tratta di espressioni il cui esito, cioè il risultato prodotto, dipende dalla soddisfazione o meno di una condizione precedentemente definita. Nella definizione di un costrutto condizionale si utilizzano le keyword if, elif ed else. Gli...
Nel mondo della programmazione, gestione delle strutture condizionali è fondamentale per l'esecuzione di operazioni differenti basate su valori specifici. Python ha introdotto una nuova modalità di implementazione delle istruzioni condizionali con il match-case, una funzionalità disponibile a partire dalla versione 3.10. In questo articolo esploreremo come utilizzare questo nuovo costrutto in python per simulare uno switch case, consentendo ai...
Il ciclo (loop) for è uno dei cicli di iterazione messi a disposizione dal linguaggio Python, si tratta in sostanza di un costrutto, comune anche ad altri linguaggi, che consente di ripetere un'operazione un certo numero di volte, più tecnicamente "iterare una sequenza o un oggetto", fino alla soddisfazione di una determinata condizione (implicita) che terminerà il ciclo.
Per chiarire...
Il ciclo while si differenzia dal ciclo for precedentemente descritto più a livello sintattico che funzionale, in generale è comunque possibile affermare che mentre nel ciclo for le iterazioni proseguono fino al verificarsi di una determinata condizione (ad esempio il raggiungimento di un dato incremento di valore a carico di una variabile), nel ciclo while le iterazioni continuano invece...
Terminare un ciclo con break
Grazie agli esempi proposti in precedenza è stato possibile introdurre l'istruzione break, quest'ultima, quando impiegata all'interno di un ciclo si occuperà di terminarlo in corrispondenza di un determinato evento, come per esempio il verificarsi di una condizione specifica o dell'eventualità opposta.
Sostanzialmente break rappresenta uno strumento attraverso il quale influenzare il flusso di esecuzione di...
E' possibile definire le funzioni come degli insiemi composti da una o più istruzioni necessarie per lo svolgimento di un determinato compito; uno dei vantaggi derivanti dall'utilizzo di questi costrutti riguarda il fatto che essi possono essere definiti una volta sola e poi utilizzati in più di un'occasione all'interno della medesima applicazione, ciò avverrà tramite un meccanismo denominato "chiamata...
Per la definizione delle funzioni in Python è necessario tener presente alcune regole sintattiche in modo da evitare la generazione di errori. Vi sono poi dei cotrutti particolari che semplificheranno il lavoro dello sviluppatore.
Il numero degli argomenti
Quando si definisce una funzione, in Python è necessario che gli argomenti passati ad essa come parametri siano definiti a priori sia nella...
Funzioni anonime
In Python le funzioni Lamba sono dei particolari costrutti sintattici derivati dal linguaggio Lisp e chiamati anche funzioni anonime; rispetto alle comuni funzioni definite dall'utente esse non sono associate ad un nome, da qui la caratteristica di essere "anonime", non vengono introdotte dalla parola chiave def, prevedendo invece la keyword lambda, e possono essere seguite soltanto da un'unica...
In Python è possibile definire una lista, alla quale si potrà attribuire un nome, inserendo degli elementi tra parentesi quadre (""). Chi già lavora con altri linguaggi per la programmazione o lo sviluppo conoscerà sicuramente gli array, o "vettori", che sono delle variabili destinate a contenere ulteriori variabili; sintatticamente e concettuamente le liste possono ricordare gli array, ma il...
Modificare gli elementi di una lista
Gli elementi presenti all'interno di una lista potranno essere modificati dinamicamente; nel prossimo capitolo analizzeremo un costrutto sintattico simile alle liste, le tuple che abbiamo analizzato parzialmente in precedenza; queste ultime funzionano in modo simile alle liste ma hanno la caratteristica di essere immutabili, mentre per quanto riguarda le liste si avrà una...
Come anticipato, le tuple sono dei costrutti che, come accade per le liste, possono contenere una raccolta di elementi; la differenza sostanziale tra le liste e le tuple sta però nel fatto che mentre nelle prime gli elementi che le costituiscono possono essere modificati, nelle tuple divengono immutabili.
La sintassi per la definizione delle tuple prevede che gli elementi...
Come anticipato, le tuple si differenziano dalle liste soprattutto per via del fatto di essere immutabili, una volta che viene assegnato un elemento ad una tupla quest'ultimo non potrà essere modificato.
E' comunque possibile alterare alcune componenti di una tupla, se per esempio un elemento di una tupla è rappresentato da un tipo di dato modificabile, come nel caso...
In Python le funzioni native per le liste e le tuple sono le medesime, presentano gli stessi nomi e la stessa sintassi e prevedono gli stessi valori di ritorno; vale quindi la pena analizzarle insieme per evitare inutili ripetizioni. Chiaramente faremo riferimento soltanto ai costrutti più comunemente utilizzati.
Funzioni comuni di liste e tuple
Un primo esempio sono le semplici funzioni...
I set sono delle entità simili alle liste e alle tuple, essi sono definibili come delle raccolte non ordinate di elementi in cui ciascuno di essi è unico e immutabile. In sostanza un set è composto da elementi non duplicati che non possono essere modificati, è invece possibile modificare i set, per esempio aggiungendo o rimuovendo elementi.
Definire un...
Le funzioni disponibili in Python per i set sono in linea di massima le stesse descritte in precedenza per le liste e le tuple, motivo per il quale non sarà necessario ripeterle. Più interessante è analizzare alcuni utilizzi pratici dei set che si prestano in modo particolare ad operazioni di insieminstica come le unioni, le intersezioni, le differenze e...
In Python i dizionari (dictionary), o semplicemente dict, sono delle raccolte non ordinate di oggetti che appartengono ai cosiddetti tipi di dato compound (o container) esattamente come le liste, le tuple e i set, ma differenza di questi i dizionari non presentano come elementi dei semplici dei valori, bensì delle coppie composte da chiavi e valori.
Tale caratteristica è...
I dizionari in Python sono dei costrutti iterabili, questa caratteristica li rende particolarmente utili nelle operazioni che prevedono la selezione di valori specifici o la restituzione di valori compresi all'interno di intervalli. Quanto esposto diviene ancora più chiaro nel caso in cui i dizionari, e i valori che rappresentano, vengano utilizzati all'interno di cicli o nei costrutti condizionali.
Comprehension dei...
In Python un modulo è essenzialmente un file che contiene del codice scritto in questo linguaggio. I moduli sono caratterizzati dall'estensione ".py", quindi al file "istruzione.py" corrisponderà il nome modulo "istruzione". Lo scopo dei moduli è duplice: essi contengono istruzioni e definizioni che possono essere riutilizzate quante volte si vuole senza la necessità di doverle riscrivere, basterà "importare"...
Per utilizzare al meglio i moduli è fondamentale capire come essi vengono gestiti da Python, approfondire questo argomento consente di scoprire l'utilità di alcune funzioni native del linguaggio che possono rivelarsi fondamentali per migliorare la produttività in sede di sviluppo, risparmiare sulla quantità di codice digitato e ottimizzare le prestazioni delle nostre applicazioni.
Il meccanismo di importazione dei moduli...
I moduli possono essere considerati sia dei contenitori (di definizioni, istruzioni, metodi..) che dei contenuti collezionabili all'interno di insiemi più strutturati detti package. Questi ultimi rispondono alla necessità di organizzare i moduli in modo razionale: plausibilmente uno sviluppatore lavorerà in modo più semplice e produttivo se potrà dedicare spazi differenti a moduli con funzionalità diverse, per questo motivo i...
Come qualsiasi altro linguaggio di programmazione che si rispetti anche Python integra delle funzionalità appositamente dedicate alle gestione dei file. Lo sviluppatore ha quindi a disposizione diverse funzioni native attraverso le quali aprire, leggere, scrivere e chiudere un file dopo averlo manipolato; sono inoltre previste delle modalità (o privilegi) di accesso ai documenti che consentiranno di effettuare tutte le...
In Python, come abbiamo visto nella lezione precedente della nostra guida, è possibile compiere diverse operazioni sul filesystem, come la creazione, la lettura e la scrittura di file.
Una delle operazioni più importanti quando si lavora con il filesystem, però, è la verifica dell'esistenza di un file. Essa è fondamentale prima di effettuare qualsasi operazione sui file al fine di...
Come qualsiasi altro linguaggio di programmazione, Python individua le directory in quanto insiemi di file e sotto-cartelle, directory vuote verranno quindi interpretate come spazi di memoria destinati ad ospitare eventuali contenuti.
La gestione delle directory è resa possibile dalla disponibilità di un modulo apposito, os, che può essere utilizzato tramite importazione.
Rilevazione della directory corrente
Il metodo getcwd() consente di rilevare la...
Possiamo definire un'eccezione come il costrutto di un linguaggio che, in presenza di un'anomalia, genera un messaggio di errore.
Quando si verifica un problema durante il funzionamento di un processo, quest'ultimo viene arrestato e, nel caso in cui l'anomalia non venga gestita l'applicazione smetterà di funzionare dpo la sua segnalazione.
Eccezioni predefinite
Python presenta decine di eccezione predefinite e ognuna di...
Python supporta diversi paradigmi per la programmazione compreso l'OOP (Object-Oriented Programming, programmazione orientata agli oggetti), un approccio il cui maggior vantaggio è quello di consentire la creazione di codice riutilizzabile.
Tecnicamente l'OOP prevede di raggruppare sia le strutture dei dati e che le procedure che agiscono su di esse in una singola entità denominata classe.
Le classi
Una classe è in...
L'ereditarietà è un meccanismo grazie al quale una classe derivata (o child class) può acquisire le funzionalità definite in una classe base (o parent class) senza dover operare alcune modifica a carico di quest'ultima.
L'utilizzo dell'ereditarietà presenta principalmente un vantaggio: consente di non dover riscrivere codice già digitato rendendolo riutilizzabile.
Definire una classe derivata
Per definire una classe derivata è...
Il paradigma OOP non nasce soltanto per garantire una maggiore riutilizzabilità del codice, ma anche per favorire lo sviluppo collaborativo, le classi sono infatti per loro natura "condivisibili". A ben vedere si tratta comunque di concetti strettamente legati.
Il fatto che l'approccio alla programmazione ad oggetti favorisca il lavoro in team non significa però che qualsiasi componente di un...
MySQL è un DBMS (Database Management System) di tipo relazionale, ciò significa che le informazioni archviate e gestite attraverso di esso sono in correlazione tra loro in base a delle proprietà. Per interagire con questa piattaforma è disponibile il linguaggio SQL (Structured Query Language) che è di tipo dichiarativo (o logico) in quanto caratterizzato dal fatto che le istruzioni...
Un database relazionale gestito tramite MySQL è composto da una o più tabelle destinate ad ospitare dei dati, questi ultimi vengono ordinati in record (i pratica le righe delle tabelle) e rappresentano i valori di specifici associati ad unità di base, ognuna definita da un nome, dette campi (le colonne delle tabelle).
In questa lezione scopriremo come Python possa essere...
Una volta creata una tabella con i relativi campi è possibile popolarla tramite l'inserimento dei dati. Quando si gestisce un database MySQL tale operazione può essere effettuata utilizzando il comando INSERT INTO seguito dal nome della tabella e da quelli dei campi coinvolti nell'inserimento separati da una virgola e delimitati da parentesi tonde. I valori da assegnare ai campi...
Dopo aver inserito i dati all'interno di una tabella una delle operazioni più frequenti a carico dei database è quella relativa alla selezione dei dati che, in questo modo, possono essere estratti in toto o sulla base di determinati criteri per la stampa a video, le attività di analisi o altre elaborazioni.
Il modulo di Python per l'interazione con MySQL...
Tra le procedure effettuate con una certa frequenza nella gestione dei database vi sono anche quelle che prevedono la rimozione di record, tabelle e delle basi di dati stesse. I comandi SQL da utilizzare possono differire a seconda dell'elemento che si desidera eliminare ed è sempre utile ricordare che questo tipo di operazioni sono irreversibili, quindi se non si...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 181 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Puoi scegliere come utilizzare i tuoi dati personali. Noi e i nostri partner desideriamo il vostro permesso per fare quanto segue.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":"\u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E\u003Cstyle\u003E.cl-consent-settings{position:fixed;left:16px;bottom:calc(28px + var(--__lxG___css_var_privacy_icon_auto, 0px));z-index:100;transition:all 0.15s ease-in-out;transform:translateY(0)}.cl-consent-settings--is-hidden{transform:translateY(70px);opacity:0}.cl-consent-settings__hint{border-radius:4px;background:#282A3C;box-shadow:0 4px 24px 0 rgba(0,0,0,.15);color:#FFFCF2;position:absolute;right:-195px;top:0;bottom:0;margin:auto;height:40px;width:175px;display:flex;align-items:center;justify-content:center;padding:4px 12px;font-size:12px;font-weight:400;line-height:16px;cursor:default;user-select:none;transition:transform 0.3s ease,opacity 0.3s ease;transform:translateX(-22px);opacity:0;pointer-events:none;z-index:-1}.cl-consent-settings__hint::after{content:\u0022\u0022;position:absolute;left:-16px;top:0;bottom:0;margin:auto;width:0;height:0;border:0 solid transparent;border-top-width:12px;border-bottom-width:12px;border-right:16px solid #282A3C}.cl-consent-settings__btn{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;border:none;background-color:#4b81e8!important;background-position:center center;background-size:30px 30px;background-repeat:no-repeat;box-shadow:0 0 20px 0 rgba(0,0,0,.35);z-index:70;position:relative;text-decoration:none;cursor:pointer}.cl-consent-settings__btn::before{content:\u0022\u0022;-webkit-mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);background-color:#ffffff!important;mask-repeat:no-repeat;width:30px;height:30px}.cl-consent-settings__btn:hover+.cl-consent-settings__hint{transform:translateX(0);pointer-events:all;opacity:1}.cl-consent-settings__user{width:18px;height:18px;border-radius:50%;padding:0;border:1px solid #fff;background-color:#00AD98;background-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022);background-position:center center;background-size:9px 10px;background-repeat:no-repeat;z-index:75;position:absolute;top:-2px;right:-8px;text-decoration:none;visibility:hidden}\u003C\/style\u003E\u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022\u003E\u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E\u003C\/button\u003E\u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EImpostazioni sulla privacy e sui cookie\u003C\/div\u003E\u003C\/div\u003E","pricds":"show_in_the_footer","pricaa":1,"vcnt":181,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di $sp3_retention$ nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura $DURATION$","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}