【问题标题】:The stdafx.h equivalence in Python software developmentPython 软件开发中的 stdafx.h 等价物
【发布时间】:2020-02-21 04:41:15
【问题描述】:

当软件变得越来越大时,可能很难为每个“.py”文件建立一个干净的导入列表。因此,我想到的问题是,是否有任何最佳实践。为了更清楚地了解这个问题,假设我们有 5 个文件,他们使用 sklearn、numpy 等。现在,是否可以创建一个名为“stdafx.py”的文件,类似于我们在 C++ 中所做的,而不是在 5 个文件代码的顶部行中导入这些包中的每一个,使用 from stdafx import * 其中stdafx.py 是所有这些包的一批。换句话说,它将包含:

        -----------------------------stdafx.py------------------------------------
import numpy as np
import pandas as pd
from tensorflow import keras
from X import Y
.
.
.

【问题讨论】:

  • 我认为这行不通。导入是不可传递的,导入 stdafx.py 不会使其导入的模块在原始脚本中可用。
  • 仅供参考,许多有经验的程序员认为stdafx.h 是可憎的。每个程序都应该只包含它需要的标头,没有“一刀切”的标头。
  • @Barmar 是的,但是在大型项目中,您应该有几个共享功能的项目。因此,为它们分配一个共享标题列表并不是一个坏主意。当然,只要它不会对项目造成相当大的负担,它就可能是真的。出于好奇,我想知道该怎么做。
  • @MiladSkrdy 抱歉,我误解了你的问题。我修复了您的导入声明并删除了我的答案。这种技术在 python 项目中的任何地方都没有使用。 Barmar 是正确的:每个程序都应该只包含它需要的标题

标签: python software-design stdafx.h


【解决方案1】:

使用from stdafx import * 之类的东西几乎总是不是最好的主意,因为模块往往会被反复导入,并且应该始终了解正在导入的内容,因为导入的内容之间可能存在冲突,尤其是如果有多个这样的导入。

进行导入的“当前”命名空间不应包含未使用的内容,尤其是未完全指定其内容的内容(*)。这使代码更易于阅读和理解导入背后的逻辑以及它们在项目中的组织方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2013-02-06
    • 2012-03-22
    • 2016-12-27
    • 2013-12-13
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多