提问者:小点点

在Python中遵循导入样式有区别吗?


我正在查看代码库,注意到以下导入模块的样式
Import Torch.nn作为nn

在我的个人工作中,我一直使用以下方法
来自torch import NN

这两种导入方式有什么不同吗?


共3个答案

匿名用户

两者在技术上是不同的:

  • 导入火炬。nn作为nn将只导入模块/包火炬。nn,其中
  • 从torch导入nn可以并且将更喜欢从torch模块/包导入属性.nn

在实践中,用相同的完全限定名指代两个单独的事物是一种不良作风。 因此,torch.nn应该只引用模块/包。 在这种常见的情况下,两个import语句在功能上是等价的:同一个对象被导入并绑定到相同的名称。

基本导入语句(no from子句)分两步执行:

  1. 查找模块,如果需要,加载并初始化模块
  2. 在本地命名空间中为发生import语句的作用域定义一个或多个名称。

from表单使用稍微复杂一点的过程:

>

  • 查找from子句中指定的模块,如果需要,加载并初始化该模块;
  • 对于导入子句中指定的每个标识符:

    1. 检查导入的模块是否具有同名属性
    2. 如果没有,请尝试导入具有该名称的子模块,然后再次检查导入的模块是否具有该属性

  • 匿名用户

    导入模块从模块导入的区别主要是主观的。 选择一个你最喜欢的,并在使用它时保持一致。 以下是两者的一些优点,可以帮助你做出决定。

    进口优势

    1. 减少对导入语句的维护。
    2. 不需要添加任何其他导入即可开始使用模块中的其他项

    从火炬进口nn的优势

    1. 使用NN
    2. 减少键入次数
    3. 对可访问模块项的更多控制

    匿名用户

    示例中的两种样式在使用时都有相同的语法,因此这取决于您的喜好,但您应该与一种样式保持一致。