`import turtle`和`from turtle import *`有什么区别?

时间:2015-06-09 21:53:07

标签: python turtle-graphics

除了语法上的差异,我不明白from turtle import *import turtle t = turtle.Pen() # rest of program... 之间的区别是什么,因为两种方法似乎产生相同的结果:

方法1

# Method 2:

from turtle import *

t = Turtle()

# rest of program...

方法2

{{1}}

我遵循的一个互联网教程使用方法1,另一个使用方法2.两者之间的区别是什么?我应该何时使用每一个?

3 个答案:

答案 0 :(得分:4)

方法1

您只是导入包turtle并且您可能已经知道,您无法使用尚未声明的变量。因此,您必须使用包名称引用每个项目作为turtle.Penturtle.Turtle之类的前缀。


方法2

您没有导入包turtle,因此您根本无法使用它。实际上,您实际上是从命名空间导入每个成员,因此您可以使用PenTurtle中所示的项目名称,这些名称被定义为包含命名空间。“ / p>

答案 1 :(得分:1)

除了纯粹的语义之外,还有很好的理由不这样做:

from module import *

它污染了命名空间,你没有简单的方法来查找你刚刚包含的内容。

陈述:

import module

您将模块加载到命名空间中,但限制其中的所有内容。这可以让您准确了解导入的内容,因此如果您有module.a和已定义的内容,则不必担心覆盖模块.a。

它与上面的链接具有相同的import语句。

其余的取决于包结构:特别是模块是否留下空白 init .py或通过所有 = [...]

如果全部已定义,则导入为子模块,否则导入模块,然后重命名子模块。

如图所示,非常不鼓励进口*品种(一些Pythonist甚至表示他们希望永远不允许): What exactly does "import *" import?

答案 2 :(得分:1)

“import turtle带来”模块和“from turtle import *”带来模块中的对象。

如果我这样做

import sys

我输入

sys.exit()

如果我这样做

from sys import *

我输入

exit()