gpt4 book ai didi

python - 导入该模块时是否需要保留 python 模块的导入?

转载 作者:行者123 更新时间:2023-11-28 21:21:22 24 4
gpt4 key购买 nike

已经很晚了,我对导入中的导入(导入中)感到困惑。对于这个问题,您必须忍受我的“应用程序”和“助手”,因为它们只是解释我的 Python 项目结构的工具。

案例一:进口中进口

假设一个 python 脚本 app.py 从 app_helper.py 导入一个模块。 app_helper.py 唯一的作用就是帮助 app.py。它从不独立运行。

应用.py

from app_helper import datechecker
import ...

date_val = 20140101-1010
print datechecker(date_val)

app_helper.py

import ...

def datechecker(date_val):
if (datetime.date.today().year - int(date_val[:4])) < 0:
return "Error: Invalid year (YYYY) in %s. Too high." % date_val
else:
return True

import datetime 是否需要在 app.py、app_helper.py 或两者中?

案例2:进口中进口...

此外,假设我有 app_helper_helper.py,它是 app_helper 导入的。和 app_helper 一样,app_helper_helper 永远不会自己执行,它只是被 app_helper 调用,它只被 app.py 调用。在这种情况下,app_helper.py 中有一些我没有显示的内容。

app_helper.py

from app_helper_helper import decision
import ...

def datechecker(date_val):
if (datetime.date.today().year - int(date_val[:4])) < 0:
return "Error: Invalid year (YYYY) in %s. Too high." % date_val
else:
return decision()

app_helper_helper.py

import ...

def decision():
x = random.random()
if x > .5:
return True
return False

那么进口到哪里去了?

案例 1 的答案应该确定这两个模块的 import random 去哪里,但是 app.py 是否也需要 import randomimport decision 又如何呢? app.py 需要做这些吗?或者 app_helper.py 会处理它吗?最重要的是,如果 app.py 还需要使用 app_helper_helper 的决策函数,那么 app.py 和 app_helper.py 都需要 from app_helper_helper import decision 还是只是 app.py?

我知道 http://docs.python.org/2/tutorial/modules.html应该涵盖这里的大部分基础,但我想我只需要有人用我的术语或 app-app_helper-app_helper_helper 术语来表达它。

最佳答案

考虑以下两个脚本:


module1.py

import random
import module2

module2.py

print random.random()   # NameError: name 'random' is not defined

module2 不知道 random,并且可以很好地定义它自己的名为 random 的对象。尽管不鼓励这样做,但它不是禁止的。在 random 的情况下,一个内置模块,预期 不会隐藏它。但是还有数以千计的其他包可以下载,所有包都使用它们自己的模块名称。不能期望您避免所有这些问题。

因此,要使用模块的功能,无论是内置的 random、下载的包还是您自己的模块,调用模块必须导入它。否则它无法知道它。

在多个地方导入模块的开销很小。代码没有加载两次。它只被引用了两次。


简而言之,在你需要的模块中导入你需要的东西。

关于python - 导入该模块时是否需要保留 python 模块的导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21570601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com