簡體   English   中英

Python-泛型函數的最佳位置

[英]Python - Best Place for Generic Functions

我正在編寫一個flask應用程序,並且發現我有大量的通用實用程序功能。

以下是我認為通用工具功能的功能類型的示例:

def make_hash():
  return defaultdict(make_hash)

def file_read(filename):
  with open(file_name_, 'r') as f:
    return f.read()

def file_write(filename, data):
  with open(filename, 'w') as f:
    f.write(data)

我當時正在考慮將這些功能一起放入一個單獨的模塊中。 但是,如果我有以下問題,我會很好奇:

  • 有兩個獨特的功能可共同保證一個單獨的模塊。 例如,上面的file_read和file_write函數可以進入file.py模塊,但是由於它具有兩個函數,我覺得這可能是過分的。
  • 在我的應用程序中,我每個函數使用這些函數2-3次,因此我冒充他們創建這些實用程序函數應該可以幫助我節省一些代碼行,並希望使我效率更高。

問題:-將通用實用程序功能分組的pythonic方法是什么? 我應該創建一個單獨的模塊嗎? 很好奇其他人正在組織這種類型的代碼。

我認為它與Python沒有太大關系,這更多是設計決定。

僅對於這些行,我將不創建單獨的模塊。 但是,如果您使用它2至3次,我將不會復制代碼。 如果以后要更改某些內容,則只需進行一項更改,即可保持功能的一致性。

而且這些方法似乎非常通用,因此您以后可以在其他項目中輕松使用它們。

我假設您想將它們@static_method靜態( @static_method )。

我主要要做的是按類型對通用實用程序類進行分組,即在您的情況下,一個文件用於字典(具有1個方法),而一個文件用於文件(具有2個方法)。 以后可能會添加更多方法,但功能會按類型/用途分組。

在python中,我們有一個叫做Package的東西(一個通常的文件夾,帶有一個名為__init__.py的空文件),它用於包含所有模塊,因此我們會創建某種名稱間隔。

您的應用程序可以使用來訪問其自己的名稱空間。

例如具有以下文件

MyPackage/__init__.py (empty)
MyPackage/webapp.py (your web application)
MyPackage/utils.py (generic utilities)

在webapp.py中,您可以擁有類似的內容

from .utils import *

或一一列出

from .utils import file_read, file_write

注意utils之前的點前綴

您可以采取一些措施來減少模塊文件的數量,同時保留模塊的子分類。.創建多級模塊函數:myModule.Hash。<> myModule.FileIO。<>

這樣,您可以根據自己的喜好導入單個組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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