簡體   English   中英

Python:在導入的模塊中構造模塊變量的最佳方法

[英]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_LISTload_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM