题目有点难理解,但我的问题很简单。你知道吗
我有一个程序需要获取某些东西的sqrt()
,但这是我从math
需要的唯一东西。导入整个模块来获取单个函数似乎有点浪费。你知道吗
我可以说from math import sqrt
,但是sqrt()
会被添加到我的程序的主名称空间中,我不希望这样(特别是因为我计划将程序更改为可用的模块;这样导入会不会在这种情况下引起问题?)。有没有办法只导入那一个函数,同时仍然保留math.sqrt()
语法?你知道吗
在这个特定的例子中,我使用的是python2.7,但是如果python3有不同的答案,我也希望听到这些,以供将来参考。你知道吗
无论哪种方式,您都可以“导入”完整的
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__
变量,该变量是表示在模块用户执行启动导入时将导入的对象的字符串列表。你知道吗从
math import sqrt
使用。可以使用__all__
语句保护从模块导出的函数。__all__
应该是要从模块导出的名称列表。你知道吗简言之,答案是否定的。只要做
from math import sqrt
。如果将脚本用作模块,则不会导致任何问题,并且不会降低代码的可读性。你知道吗相关问题 更多 >
编程相关推荐