[英]Python: Best way to structure module variables in imported module
假設我在numbers.csv
文件中有一個參考編號列表。
我正在編寫一個模塊checker.py
,可以將其導入並調用以檢查像這樣的數字:
import checker
checker.check_number(1234)
checker.py
將加載一個數字列表,並提供check_number
來檢查列表中是否有給定的數字。 默認情況下,它應該從numbers.csv
加載數據,盡管可以指定路徑:
DATA_FILEPATH = 'numbers.csv'
def load_data(data_filepath=DATA_FILEPATH):
...
REF_LIST = load_data()
def check_number(num, ref_list=REF_LIST):
...
問題-變量和函數的交錯對我來說似乎很奇怪。 有沒有比上述更好的方法來構造checker.py
?
我閱讀了有關如何在Python中創建模塊范圍的變量的出色答案? 。
最佳做法是:
聲明我在上面完成的REF_LIST
列表?
創建一個類似VARS = {'REF_LIST': None}
的字典,並在load_data
設置VARS['REF_LIST']
?
創建一個普通的類,並分配clas.REF_LIST
在load_data
?
還是取決於情況? (在什么情況下我會使用哪種?)
注意
以前,我通過僅在調用模塊中需要時才加載數據來避免這種情況。 因此在checker.py
:
DATA_FILEPATH = 'numbers.csv'
def load_data(data_filepath=DATA_FILEPATH):
...
def check_number(num, ref_list):
...
在調用模塊中:
import checker
ref_list = checker.load_data()
checker.check_number(1234, ref_list)
但這對我來說加載到調用模塊中並不是很有意義,因為如果我想檢查5個不同模塊中的數字,則需要將load_data
5次。
您可以借助Pandas框架輕松加載csv數據
import pandas as pd
dataframe=pd.read_csv('numbers.csv')
使用以下代碼檢查datframe中是否存在數字:
numbers=[1,3,8]
for number in numbers:
if number in dataframe[dataframe.columns[0]]:
print True
else:
print False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.