标题有点难以理解,但我的问题很简单。
我有一个程序需要采取sqrt()
某事,但这是我唯一需要的math
。为了获取单个功能而导入整个模块似乎有点浪费。
我可以说from math import sqrt
, 但是之后sqrt()
将被添加到我的程序的主命名空间中,但我不希望这样(特别是因为我计划将程序更改为可用作模块;在这种情况下导入会导致问题吗?)。有没有办法只导入该一个函数,同时仍然保留math.sqrt()
syntax?
在这种特定情况下,我使用的是 Python 2.7,但如果 Python 3 有不同的答案,我也想听听以供将来参考。
无论哪种方式,您“导入”完整的math
模块在某种意义上是编译并存储在sys.modules
。因此,如果这样做,您将不会获得任何优化优势from math import sqrt
相比import math
。他们做同样的事情。他们进口整个math
模块,存储它sys.modules
然后唯一的区别是第一个带来了sqrt
函数进入你的命名空间,第二个带来math
模块到您的命名空间中。但这些名称只是引用,因此仅从模块导入一项内容不会使您在内存或 CPU 方面受益。
如果你想要math.sqrt
语法然后使用import math
。如果你想要sqrt()
语法然后使用from math import sqrt
.
如果您关心的是保护模块的用户在执行星号导入时不污染其名称空间:from your_module import *
然后定义一个__all__
模块中的变量,它是表示当模块的用户执行开始导入时将导入的对象的字符串列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)