【问题标题】:Python: suggestions how to organize a Python project. Some questions [closed]Python:建议如何组织 Python 项目。一些问题[关闭]
【发布时间】:2013-01-08 15:23:13
【问题描述】:

首先谢谢,我知道堆栈溢出充满了这个论点(但我们可以考虑一个复习问题)。我有一些关于组织 Python 项目的问题。

从这个link 我找到了这个不错的架构

/myproject
   /__init__.py # This makes it a Python package and importable.
   /evaluate.py # Contains the code to actually do calculations.
   /main.py # Starts the application
   /ui.py # Contains the code to make a pretty interface

从此web site __init__.py 通常为空

我的问题是:

  1. 假设您有一个函数 (def foo)。 foo 位于 evaluate.py 还是在 main.py 中?
  2. 如果 foo 位于main.py(或evaluate.py)中,那么评估.py(或 main.py) 包含?
  3. 有时我会找到utilities.py 和/或module.py。 utility.py/module.py 包含哪些内容?

提前致谢

【问题讨论】:

  • 我喜欢相信形式源于功能。您的项目所做的将决定如何组织它。您的示例有两个组件,一个 ui 和一个计算,因此这些组件有 2 个 py 文件,其余的是将它们放在一起的胶水。至于你的 foo 去哪里,是计算 foo 还是 ui foo。最后,随处使用的辅助函数通常位于 common.py 或 utility.py 中。
  • 我不认为这个例子可以从字面上理解。它用于说明创建模块不是为了保存单个类或其他东西,而是创建包含逻辑组的模块。
  • 对不起,是计算 -> 评估
  • 扩展delnans评论,如果它计算东西,evaluate.py。如果它与向用户展示东西有关,ui.py。如果它与启动一切或清理有关,main.py。
  • 通常在main 中解析命令行参数、读取环境、解析配置文件、打开输入文件、连接服务器等,然后将工作交给实际的处理模块。跨度>

标签: python coding-style


【解决方案1】:

根据我的编码风格: main.py:总是做一些简单的事情,从外部环境初始化变量并加载配置文件。并包装实际的逻辑事物。例如:

from evaluate import actual_things
def run():
    ...
    actual_things()
    ...

if __name__ == '__main__':
    init()
    load_from_config()
    run()

问:有时我会找到 utility.py 和/或 module.py。什么实用程序.py/module.py 包含? A:utilities.py: 或utils.py 经常是帮手。如编解码、加密等。

问:如果 foo 位于 main.py(或评估.py)中,评估.py(或 main.py)包含什么? A:你必须指出 foo 是做什么的,根据 foo 的功能,我们将 foo 定位到某个地方。如果 foo 是业务相对函数,则 foo 应该位于 evaluate.py 中。

问:假设你有一个函数(def foo)。 foo 位于 evaluate.py 还是 main.py? 答:见上文。

最后,我认为最好的了解方法是从整体上学习一个项目。你会知道 QA 帮不了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2012-10-21
    • 2012-06-02
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多