一般来说,是的,您确实希望避免使用from module import * 形式。这样做的目的是打开模块(一个普通的 python 文件),并从本质上获取该文件中定义的每个函数、类等,并将其添加到您的命名空间。你是对的——* 确实意味着“一切”。
所以,如果我编写了一个名为 foo.py 的模块,其中包含一个名为 bar1、bar2 等的函数,那么执行 from foo import * 将允许我使用这些函数,就像我在当前文件中定义它一样:
from foo import *
bar1()
bar2()
# etc
这不好的主要原因是它需要未知数量的函数和类并将其转储到您的命名空间中。当你突然开始使用一个函数时,很难跟踪更大的代码库中发生的事情。例如:
from a import *
from b import *
from c import *
# etc
example()
# Where did this come from? From module a, b, or c? What if both a and b define a
# function named 'example'?
您已经知道import module; module.function 表单,但还有第三种表单也很有用:
from turtle import fd, right, left # etc
right(90)
fd(100)
backwards(300) # throws an error!
forwards(300) # throws an error!
现在,我可以挑选我想要的函数,知道它们来自哪里,并避免污染我的命名空间。
但是,在你的情况下,我不会太担心。由于您正在试验和学习如何使用 turtle 模块,我认为专注于这方面比编写完美地道的 Python 更重要。