这是一个语言设计问题。为什么设计师不使用
import A.B
代替
from A import B
假设 A 是一个包含函数 B 的模块。导入语法使用单一样式不是更好吗?这背后的设计原则是什么?我认为 Java 风格的导入语法感觉更自然。
这是一个语言设计问题。为什么设计师不使用
import A.B
代替
from A import B
假设 A 是一个包含函数 B 的模块。导入语法使用单一样式不是更好吗?这背后的设计原则是什么?我认为 Java 风格的导入语法感觉更自然。
Python 导入语句主要用于加载模块和包。您必须先导入模块,然后才能使用它。第二种形式的导入只是一个附加功能,加载模块,然后将它的某些部分复制到本地命名空间中。
存在 Java 导入语句以创建其他模块中加载的名称的快捷方式。Java import 语句不加载任何内容,而只是将内容移动到本地名称空间中。在 Java 中,您无需导入模块即可使用它们。import 语句与是否加载模块无关。
所以这两种语言采用完全不同的方法来导入。导入语句基本上只是不做同样的事情。Python 的导入用于加载,Java 导入用于快捷方式。
Java 的方法在 python 中会有些问题。在 Java 中,很容易从语法中区分什么是类/模块/包。Python 没有这个优势。结果,编译器和读者将难以确定什么是和不应该是对外部包的引用。出于这个原因,Python 的设计者选择使其明确并强制您指定要加载的外部模块。
一致性。import A.B
从不添加B
到本地命名空间,即使在它有效的情况下;它只是B
通过 提供A
,这些功能已经很自然了。
您可以使用模块执行此操作,但不能使用函数,例如。
os.path
通常是这样进口的