假设我在文件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
有比上述更好的方法吗?
我读了How to create module-wide variables in Python?的优秀答案。
最佳做法是:
REF_LIST
列表吗?VARS = {'REF_LIST': None}
这样的词典并在VARS['REF_LIST']
中设置load_data
?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个不同模块中的数字,我需要5次load_data
。
您可以在Pandas框架的帮助下轻松加载csv数据
import pandas as pd
dataframe=pd.read_csv('numbers.csv')
使用以下代码检查数据框中是否存在数字:
numbers=[1,3,8]
for number in numbers:
if number in dataframe[dataframe.columns[0]]:
print True
else:
print False