在python中,';将foo.bar导入为bar';和';从foo导入栏';?
我在pyTorch和matplotlib中看到了这个约定:在python中,';将foo.bar导入为bar';和';从foo导入栏';?,python,python-3.x,python-import,Python,Python 3.x,Python Import,我在pyTorch和matplotlib中看到了这个约定: import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt 是否存在将整个路径(module.submodule)作为别名而不是仅作为子模块导入的原因?如果我这样导入,有什么区别: from torch import nn from torch import optim from matplotlib import pyplot
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
是否存在将整个路径(module.submodule
)作为别名而不是仅作为子模块导入的原因?如果我这样导入,有什么区别:
from torch import nn
from torch import optim
from matplotlib import pyplot as plt
编辑:因此对于一般情况:
import foo.bar as bar # [1]
from foo import bar # [2]
是否存在引用
条的代码,以便它将与[1]
一起运行,而不是[2]
(反之亦然)?也就是说,这两种导入方式之间是否存在功能差异?将空白导入为空白
允许您在整个程序中引用模块作为该名称
from blank import blank
从模块导入特定的方法、函数和类。在幕后,所有的导入语句基本上都映射到内置的\uuuuuuuuuuuuuuuuuuuuu
例如:
import torch.nn as nn
变成
nn = __import__("torch.nn", globals(), locals(), [], 0)
nn = __import__("torch", globals(), locals(), ["nn"], 0)
同样地:
from torch import nn
变成
nn = __import__("torch.nn", globals(), locals(), [], 0)
nn = __import__("torch", globals(), locals(), ["nn"], 0)
细微不同但功能相同
参考资料:对于列出的示例,可能没有太大区别。我认为使用的地方是当您希望使用较短的名称时。最常见的示例是import numpy as np
,尽管您的plt
示例也很常见。我不相信这能回答我的问题。我问的是import a.b as b
与import b as b
之间的功能区别。当引用b
时,是否有某种情况下某些代码将在前一种情况下运行,而不是在后一种情况下运行?使用导入b中的作为c
时,您正在以新名称导入特定的函数、方法、类等