Python:当XX是自己创建的文件或者XX是python库文件时"from XX import * "的区别(比如pytorch)
Pyhon: the difference of "from XX import * " when XX is file created by myself or XX is python library file(like pytorch)
当我使用 pytorch 时,我想知道为什么我不能使用“from torchvision.models.vgg import *”
从 torchvision.models.vgg 导入部分函数或变量
像这样:
from torchvision.models.vgg import *
if __name__=="__main__":
print(cfgs["A"])
和
from torchvision.models.vgg import *
from typing import Union, List, Dict, Any, cast
cfgs: Dict[str, List[Union[str, int]]] = {
'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],
'B': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],
'D': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],
'E': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'],
}
if __name__=="__main__":
print(make_layers(cfgs["A"]))
找不到变量“cfgs”和函数“make_layers”
但我可以使用像“vgg16_bn()”这样的函数,它与“make_layers”在同一个文件中
from torchvision.models.vgg import *
if __name__=="__main__":
print(vgg16_bn())
我需要这样导入:
from torchvision.models.vgg import cfgs,make_layers
if __name__=="__main__":
print(make_layers(cfgs["A"]))
但是如果我导入的文件是这样自己创建的:
b.py:
url="http"
def a ():
return True
main.py 可以找到变量“url”和函数“a()”
from b import *
if __name__=="__main__":
print(url)
print(a())
我不知道为什么会这样,谁能解释一下it.Thanks!
torchvision/models/vgg.py
集 this particular __all__
指示其导出的符号:
__all__ = [
"VGG",
"vgg11",
"vgg11_bn",
"vgg13",
"vgg13_bn",
"vgg16",
"vgg16_bn",
"vgg19_bn",
"vgg19",
]
*
导入(虽然通常 不鼓励 )将默认公开 __all__
中的名称(或者如果 __all__
丢失,任何不以 _
)
开头的名称
当我使用 pytorch 时,我想知道为什么我不能使用“from torchvision.models.vgg import *”
从 torchvision.models.vgg 导入部分函数或变量像这样:
from torchvision.models.vgg import *
if __name__=="__main__":
print(cfgs["A"])
和
from torchvision.models.vgg import *
from typing import Union, List, Dict, Any, cast
cfgs: Dict[str, List[Union[str, int]]] = {
'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],
'B': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],
'D': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],
'E': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'],
}
if __name__=="__main__":
print(make_layers(cfgs["A"]))
找不到变量“cfgs”和函数“make_layers”
但我可以使用像“vgg16_bn()”这样的函数,它与“make_layers”在同一个文件中
from torchvision.models.vgg import *
if __name__=="__main__":
print(vgg16_bn())
我需要这样导入:
from torchvision.models.vgg import cfgs,make_layers
if __name__=="__main__":
print(make_layers(cfgs["A"]))
但是如果我导入的文件是这样自己创建的:
b.py:
url="http"
def a ():
return True
main.py 可以找到变量“url”和函数“a()”
from b import *
if __name__=="__main__":
print(url)
print(a())
我不知道为什么会这样,谁能解释一下it.Thanks!
torchvision/models/vgg.py
集 this particular __all__
指示其导出的符号:
__all__ = [
"VGG",
"vgg11",
"vgg11_bn",
"vgg13",
"vgg13_bn",
"vgg16",
"vgg16_bn",
"vgg19_bn",
"vgg19",
]
*
导入(虽然通常 不鼓励 )将默认公开 __all__
中的名称(或者如果 __all__
丢失,任何不以 _
)