Python如何在内部区分;“从软件包导入模块”;介于;“从模块导入功能”;

Python如何在内部区分;“从软件包导入模块”;介于;“从模块导入功能”;,python,import,python-internals,Python,Import,Python Internals,如果我理解正确,python语法来自。。。导入…可通过两种方式使用 从包名导入模块名 从模块名导入函数名 我想了解一下Python如何在内部处理这两种不同的形式。例如,假设解释器获得“来自导入B”,解释器是否实际尝试确定A是包名/模块名,还是在内部将包和模块视为同一类对象(类似于Linux对文件和目录的处理非常类似)?首先,模块是包含类和函数的python文件。当您说从导入B时,python会在标准python库中搜索A(模块),然后导入B(函数或类),如果它找到了A,这就是模块。如果它没有找到

如果我理解正确,python语法
来自。。。导入…
可通过两种方式使用

  • 从包名导入模块名
  • 从模块名导入函数名

  • 我想了解一下Python如何在内部处理这两种不同的形式。例如,假设解释器获得“来自导入B”,解释器是否实际尝试确定A是包名/模块名,还是在内部将包和模块视为同一类对象(类似于Linux对文件和目录的处理非常类似)?

    首先,模块是包含类和函数的python文件。当您说从导入B时,python会在标准python库中搜索A(模块),然后导入B(函数或类),如果它找到了A,这就是模块。如果它没有找到,它会出去并开始在目录中搜索,如果存储了包并搜索包名(A),然后如果它找到了,它会导入模块名(B) 。如果在过去2个进程中失败,则返回错误


    希望这能有所帮助。

    …有趣的部分不是软件包/模块的区别,正如所指出的那样,这是薄弱的:这是模块/功能的区别,因为其中一个(到目前为止)即使只存在于磁盘上也可以使用,而一个不能使用。谢谢,但你的回答让我更加困惑:你说的“从B导入A”是什么意思?你是说“从导入B”?对不起,我是说从导入B编辑它。我很困惑,因为在其他语言中是这样的。