runoob

在 Python 中,from somemodule import *import somemodule 有一些重要的区别,主要体现在命名空间和可访问性上。

import somemodule - 导入整个模块。

使用模块中的内容时,需要使用模块名作为前缀。例如,如果 somemodule 中有一个函数 foo,你需要这样调用它:somemodule.foo()。

优点是命名空间保持清晰,避免了与当前模块中的变量和函数名冲突。

import math
print(math.sqrt(16)) # 输出: 4.0

from somemodule import * - 导入模块中的所有公开对象(函数、变量、类等)到当前命名空间。

使用模块中的内容时,不需要使用模块名作为前缀。例如,如果 somemodule 中有一个函数 foo,你可以直接调用它:foo()。

缺点是可能会引入命名冲突,因为当前命名空间中的变量和函数名可能与导入的模块中的某些名字冲突。

from math import *
print(sqrt(16)) # 输出: 4.0

总结来说,import somemodule 保持了命名空间的清晰性和安全性,减少了命名冲突的风险,而 from somemodule import * 虽然简洁,但可能导致命名冲突和代码的可读性降低。通常建议使用 import somemodule 或者 from somemodule import specific_function 这种更明确的导入方式。

更多内容可以参考:Python import 和 from … import 的主要区别