前提・実現したいこと
スパムメールフィルターを作成しています。
A、Bという辞書型変数があり、Aは単語と出現頻度、Bは単語と出現率をそれぞれ表しています。(A,B自体は質問に関係ありませんが、一応説明しておきます)
sample1.pyのdef関数内にあるBを、sample2.py内で使えるようにしたいです。
どのような方法でもいいのですが、やり方はありませんか?
以前、このサイトで質問し、「def関数内の変数を外で使う場合はグローバル変数にする」ことを教えて頂きましたが、辞書型変数をグローバル変数にするとエラーが出てしまうので分からず質問しました。
発生している問題・エラーメッセージ
sample1.pyでのエラー
$ python sample2.py training.txt C = hoge.B.copy() AttributeError: 'function' object has no attribute 'B'
該当のソースコード
sample1.py
python3
1A = {} 2 3def hoge(f): 4 ~ # 色々な処理省略 5 6 # global B = {} 7 A = {"開催":1, "人気":2, "販売":3, "講義":4} 8 # key=単語 value=出現回数 9 sum_num = sum(A.values()) 10 B = A.copy() 11 12 for key in B.keys(): 13 B[key] /= sum_num # key=単語 value=出現率 14 15C = hoge.B.copy() # 分からないところ1
sample2.py
python3
1import sys 2import sample1 3 4with open(sys.argv[1], "r") as f: 5 sample1.hoge(f) 6 C = sample1.C.copy() # 分からないところ2 7 8~ # 以下省略
試したこと
sample1.pyでBをhoge関数内で global B = {}のように書いて実行しましたが、構文エラーになりました。
sample1.pyで'C = hoge.B.copy()'として、sample2.pyで'C = sample1.C.copy()'とすれば上手くいくかとやってみましたが、上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
python 3.6.12
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/03 11:09