--- title: st.echo slug: /develop/api-reference/text/st.echo description: st.echo displays some code on the app, then execute it. Useful for tutorials. --- ### Display code Sometimes you want your Streamlit app to contain _both_ your usual Streamlit graphic elements _and_ the code that generated those elements. That's where `st.echo()` comes in. Ok so let's say you have the following file, and you want to make its app a little bit more self-explanatory by making that middle section visible in the Streamlit app: ```python import streamlit as st def get_user_name(): return 'John' # ------------------------------------------------ # Want people to see this part of the code... def get_punctuation(): return '!!!' greeting = "Hi there, " user_name = get_user_name() punctuation = get_punctuation() st.write(greeting, user_name, punctuation) # ...up to here # ------------------------------------------------ foo = 'bar' st.write('Done!') ``` The file above creates a Streamlit app containing the words "Hi there, `John`", and then "Done!". Now let's use `st.echo()` to make that middle section of the code visible in the app: ```python import streamlit as st def get_user_name(): return 'John' with st.echo(): # Everything inside this block will be both printed to the screen # and executed. def get_punctuation(): return '!!!' greeting = "Hi there, " value = get_user_name() punctuation = get_punctuation() st.write(greeting, value, punctuation) # And now we're back to _not_ printing to the screen foo = 'bar' st.write('Done!') ``` It's _that_ simple! You can have multiple `st.echo()` blocks in the same file. Use it as often as you wish!