Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,';将foo.bar导入为bar';和';从foo导入栏';?_Python_Python 3.x_Python Import - Fatal编程技术网

在python中,';将foo.bar导入为bar';和';从foo导入栏';?

在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

我在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 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
时,您正在以新名称导入特定的函数、方法、类等