Web Dashboard

파일 분리하여서 개발하기 - 함수 정의해서 호출하기

yugyeong 2022. 12. 13. 12:08

 

코드를 작성할 때, 함수를 정의하고 사용하는 경우가 많다.

그럴때, 함수 파일을 따로 분리하여서 작성을 하면 코드가 깔끔해지고 보기 좋아진다.

 

사이드바에 셀렉트 박스를 생성하여서, 리스트에 담긴 데이터를 클릭하였을 때 웹페이지에 데이터를 리턴하고자 한다.

이때 각각 클릭한 값에 따라 다른 값을 리턴하기 위해서 함수를 생성하고 호출하여서 이용할 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def main() :
    st.title('파일 분리 앱')
 
    menu = ['Home''EDA''ML''About']
 
    choice = st.sidebar.selectbox('메뉴', menu)
 
    if choice == 'Home' :
        run_home_app()
    elif choice == 'EDA' :
        run_eda_app()
    elif choice == 'ML' :
        run_ml_app()
    elif choice == 'About' :
        pass
 
cs

 

 

함수를 생성하여서 호출하기 위해서는 새로운 파이썬 파일을 만들어주어야 한다.

app_home.py 파일을 생성하여서 그 안에 Home 버튼을 클릭하였을 때 리턴될 값의 함수 run_home_app() 작성하였다.

 

1
2
3
4
5
6
7
import streamlit as st
 
def run_home_app() :
 
    st.subheader('Home 화면입니다.')
    st.text('홈화면에서 할 일을 여기에 코딩합니다.')
 
cs

위와 같은 방식으로 app_eda 와 app_ml 파이썬 파일을 생성하여, 그 안에 함수를 각각 run_eda_app() 과 run_ml_app() 을 생성하였다

 

1
2
3
4
5
6
7
8
9
import streamlit as st
import pandas as pd
 
def run_eda_app() :
    
    st.subheader('EDA 화면')
    df = pd.read_csv('streamlit_data/iris.csv')
    st.dataframe(df)
    st.dataframe(df.corr())
cs

 

1
2
3
4
import streamlit as st
 
def run_ml_app() :
    st.subheader('머신러닝 화면')
cs

 

 

그리고 현재 파이썬 파일에서 app_home.py 의 함수를 호출하여서 사용하는 것이기 때문에

파이썬 파일명과 함수를 임포트 해준다.

 

1
2
3
4
5
# 다른 파일의 함수를 호출하고 싶으면, 함수를 임포트 한다.
from app_home import run_home_app
from app_eda import run_eda_app
from app_ml import run_ml_app
 
cs

 

아래처럼 각각 함수를 정의해준 후 호출하여서 사용한 코드이다.

 

 

 

streamlit 을 run 해보면 아래와같은 결과가 나온다.