

関数について、学習を行っております。  
書籍や動画では、消費税計算やBMIの計算などを例に説明がされて  
おりますが、どうも、腑に落ちないというか、便利さが実感できない  
状況にあります。

そこで、自分で、下記の様にテキストを読み込んで、CSVファイルに書き出すという  
関数化を行わなくても書けるプログラムをあえて関数化してみました。

そこで、私の場合、関数の便利さが理解できない、腑に落ちないという原因は、  
引数の扱い方が理解できてことだと分かってきました。

特に  
**他の関数の処理結果（returnされた値）を他の関数への渡し方** が、理解できておりません。

下記、コードで、CSVへ書き出す関数の呼び出しで、`to_csv('test.csv', header_lists, data_lists)`  
で、エラーとなってしまい、どの様にすればよいのかわからない状態です。  
（`to_csv('test.csv', header_lists, data_lists)`を`def
from_txt(f_name):`の関数内で呼び出せば、エラーとならないことは理解できております。）

つきましては、下記コードを例に、又は、もう少しかみ砕いた例でご説明いただけたらと思います。

よろしくお願い致します。

[code]

    import csv
    
    
    # テキストファイル読み込み関数
    def from_txt(f_name):
        with open(f_name, 'r', encoding='utf-8') as f:
            elems = f.readlines()
            # print(read)
            
            # ヘッダーとデーター部を作成
            header_lists = []
            data_lists = []
            for elem in elems[2:18]:
                header = elem.split(':', 1)[0].strip()
                data = elem.split(':', 1)[1].strip()
                header_lists.append(header)
                data_lists.append(data)
                
        return header_lists, data_lists
    
    
    # CSV書き込み関数
    def to_csv(cf_name, h_list, d_list):
        with open(cf_name, 'w', encoding='shift-jis', newline='') as f:
            writer = csv.writer(f)
            writer.writerow(h_list)
            writer.writerow(d_list)
    
    from_txt('tmp.txt')
    
    to_csv('test.csv', header_lists, data_lists) # 例外が発生しました: NameError name 'header_lists' is not defined
    
    
[/code]


CC BY-SA 4.0
2021-09-04T01:01:14.413
82223
2021-09-04T01:32:39.490
2021-09-04T01:11:07.770
question
python python3
関数の利便性について


現在のコードですと`from_txt('tmp.txt')`の結果を捨ててしまっています。`from_txt('tmp.txt')`の結果を変数に保持して`to_csv(cf_name,
h_list, d_list)`へ渡す必要があります。

`header_lists, data_lists = from_txt('tmp.txt')`などとしてはどうでしょうか？


CC BY-SA 4.0
2021-09-04T01:32:39.490
82225
2021-09-04T01:32:39.490
39819
82223
answer