之间有什么区别
import math
和
from math import *
我是python的新手,从codeacademy学习语言。任何人都可以详细说明差异。感谢。
答案 0 :(得分:0)
你应该打开翻译并玩:
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'math']
>>> from math import *
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'math', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>>
答案 1 :(得分:0)
执行import math
时,它会导入模块math
,然后您可以使用math.<name>
直接在其中使用函数,变量和类。
当你执行from math import *
时,它会从模块中导入名称,有两种方法 -
如果模块定义了__all__
列表,则会从该列表中导入名称。
否则,它会导入所有其他变量,函数,类,但不导入子模块(如果有的话)。
但请注意,在第二种情况下,它不会导入math
模块,而是从其中导入名称。因此,您只需使用math.<name>
,而不是使用<name>
。
请注意,from <module> import *
通常被认为是不好的。您可以在此查看原因 - Why is "import *" bad?。
示例行为 -
>>> import math
>>> math.ceil(1.2)
2
>>> from math import *
>>> ceil(1.2)
2
答案 2 :(得分:0)
import math
中,您必须在输入library
之前说明method
。
像这样:
math.floor(5.3)
但是使用from import math *
,您正在使用直接来自该库的方法,因此您只需输入以下内容:
floor(5.3)
第二种方法可以节省输入,但如果您不小心将method
命名为与library
中的某个方法一致,则会遇到一些问题。关于方法的作用,第一个库也更具有特定和清晰。同样使用第一种方法,如果使用第二种方法,则无需添加额外的imports
项目。
一般来说,我更喜欢第一种方法。
答案 3 :(得分:0)
导入模块和模块导入foo之间的区别主要是主观的。选择你最喜欢的那个,并在使用它时保持一致。以下是一些可以帮助您做出决定的要点。
import module
优点:减少对import语句的维护。不需要添加任何其他导入来开始使用模块中的其他项目
来自模块导入foo
这两种方法都可以接受,但不要使用模块import *
对于任何合理的大型代码集,如果导入*,您可能会将其粘贴到模块中,无法删除。这是因为很难确定代码中使用的项目来自“模块”,因此很容易达到您认为不再使用导入的程度,但是很难确定。< / p>