gpt4 book ai didi

python - From-Import 同时保留模块访问

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:44 24 4
gpt4 key购买 nike

题目有点难懂,不过我的问题很简单。

我有一个程序需要获取某些东西的 sqrt(),但这是我唯一需要从 math 中获取的东西。导入整个模块来抢单个功能似乎有点浪费。

我可以说 from math import sqrt,但是 sqrt() 会被添加到我程序的主命名空间中,我不希望这样(尤其是因为我计划将程序更改为可用作模块;在那种情况下这样导入会导致问题吗?)。有没有什么方法可以只导入那个函数,同时仍然保留 math.sqrt() 语法?

我在这个特定案例中使用的是 Python 2.7,但如果对 Python 3 有不同的答案,我也想听听以供将来引用。

最佳答案

无论哪种方式,您都可以“导入”完整的 math 模块,因为它已编译并存储在 sys.modules 中。因此,与 import math 相比,如果您执行 from math import sqrt,则不会获得任何优化优势。他们做完全一样的事情。它们导入整个 math 模块,将其存储在 sys.modules 中,唯一的区别是第一个将 sqrt 函数带入您的命名空间第二个将 math 模块引入您的命名空间。但是这些名称只是引用,因此您不会通过仅从模块中导入一个东西来在内存方面或 CPU 方面受益。

如果您需要 math.sqrt 语法,则只需使用 import math。如果您需要 sqrt() 语法,请使用 from math import sqrt

如果您关心的是保护您的模块的用户在执行星形导入时不污染他的命名空间:from your_module import * 那么在您的模块中定义一个__all__ 变量这是表示对象的字符串列表,如果您的模块的用户开始导入,这些对象将被导入。

关于python - From-Import 同时保留模块访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300122/

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