分析用の言語としてPythonを使い始めたばかりの初心者です。
今までコードをべた書きしていましたが、汚いのでブロックごとに関数にまとめて書いていこうと試みていますが、ググってもなかなかそういう趣旨のページに行き当たらず苦戦しています。
一応func1でデータを読み込み、func2で分析を行おうと考えています。
が、func1でtrainやtestがローカル変数化してしまうため無理やりグローバル変数化しています。あまり賢くない方法のような気がするので他の方法等ありますでしょうか?
また、classとselfを使った書き方のほうがうまくいくでしょうか?
曖昧な質問ですいませんがよろしくお願いいたします。

import 必要なモジュール

def main():
    func1()
    func2()


def func1():
    bc = datasets.load_breast_cancer()
    X, y = bc.data, bc.target

    # 訓練データとテストデータに分割する
    global X_train, X_test, y_train, y_test
    X_train, X_test, y_train, y_test = train_test_split(X, y)


def func2():
    lgb_train = lgb.Dataset(X_train, y_train)
    lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)