Sbloccare il potere dello stato di sessione in Streamlit (1/2)

Sbloccare il potenziale dello stato di sessione in Streamlit (1/2)

Un Esempio Pratico

Immagine di streamlit

Introduzione

Streamlit ha avuto una rapida crescita di popolarità grazie alla sua efficacia nel facilitare lo sviluppo di applicazioni web con sforzo minimo. Sebbene Streamlit semplifichi il processo di creazione di applicazioni interattive, alcuni progetti possono richiedere funzionalità più complesse. Questo articolo sul blog si propone di esaminare il concetto di “session state” in Streamlit e illustrarne il potenziale per lo sviluppo di applicazioni che competono con altre in termini di funzionalità e esperienza utente.

Cosa è un Session State?

Prima di approfondire gli elementi pragmatici, è indispensabile stabilire una comprensione approfondita del concetto di session state all’interno del pacchetto Streamlit.

Come indicato nella documentazione ufficiale:

Session State è un modo per condividere variabili tra le esecuzioni, per ogni sessione utente. Oltre alla capacità di archiviare e persistere lo stato, Streamlit offre anche la possibilità di manipolare lo stato utilizzando Callbacks. Lo stato della sessione persiste anche tra le applicazioni all’interno di un multipage app.

Perché fa riferimento alle “esecuzioni”?

Per essere il più generico possibile, la risposta è che ogni volta che l’utente interagisce con qualcosa (ad esempio, un pulsante), tutto il codice viene eseguito nuovamente. Durante la rielaborazione del codice, le variabili incluse possono cambiare. In alcune applicazioni, è importante essere in grado di mantenere i valori di alcune variabili tra le rielaborazioni e alternarle a richiesta. Ecco perché il session state è importante. È il nostro archivio che tiene “informazioni” tra le diverse esecuzioni.

Come Usare il Session State?

Quindi, vediamo direttamente del codice che importa le librerie necessarie:

import streamlit as st

Il session state può essere facilmente accessibile per aggiornarlo o creare una nuova variabile al suo interno:

st.session_state.data["test_var"] = True

Nell’esempio sopra, è stata aggiunta una nuova chiave, “data”, inclusa il valore “test_var” con il valore True. Puoi utilizzare questa nuova variabile molto facilmente nel tuo codice, come faresti con qualsiasi altra variabile:

st.text_input("Inserisci le tue informazioni:", session_state.data.test_var)

Sfruttare il Session State per Funzionalità Complesse

L’utilizzo del session state è vantaggioso nella gestione delle sessioni dell’utente, nell’elaborazione dei invii di moduli e nel monitoraggio dello stato dell’applicazione tra diversi componenti. L’utente ha la possibilità di generare logica condizionale utilizzando variabili di sessione, consentendo così la modifica dinamica dei contenuti all’interno dell’applicazione.

In questo esempio, vengono utilizzati i callbacks. Creiamo quindi un’applicazione semplice che può calcolare il quadrato di un numero utilizzando una funzione di callback. Ecco un frammento di codice che illustra come può essere realizzato:

if "user_number" not in st.session_state:    st.session_state["user_number"] = 0if "square_result" not in st.session_state:    st.session_state["square_result"] = 0# Crea una funzione di callbackdef calcola_quadrato():    st.session_state["square_result"] = st.session_state.user_number**2# Crea un campo di input utentest.session_state.user_number = st.number_input(    "Inserisci un numero:", value=st.session_state.user_number)# Aggiungi un pulsante per attivare il calcolobottone = st.button("Calcola il quadrato", on_click=calcola_quadrato)st.write(    f"Il quadrato di {st.session_state.user_number} è {st.session_state.square_result}")

Al posto di utilizzare l’argomento “on_click”, è possibile utilizzare qualcosa di simile a quanto segue (a seconda delle tue preferenze di codifica):

# Aggiungi un pulsante per avviare il calcolose st.button("Calcola il quadrato")    calcola_quadrato()  

L’applicazione di esempio sopra può essere visualizzata qui di seguito:

Immagine dell'autore

Conclusion

Utilizzando la funzionalità stato di sessione di Streamlit, gli sviluppatori possono potenziare la funzionalità e l’esperienza utente delle loro applicazioni per competere con framework più complessi. Sfruttando le capacità dello stato di sessione, è possibile migliorare le prestazioni e la funzionalità dei progetti Streamlit a un livello superiore. Acquisisci un’esperienza di prima mano nell’utilizzare il potenziale dello sviluppo di applicazioni dinamiche e interattive che hanno un profondo impatto. Abbraccia l’opportunità e inizia un’impresa orientata a costruire applicazioni eccezionali che catturino l’interesse e creino un impatto duraturo.