擅长:python、mysql、java
<ol>
<li><p>很难回答,这取决于它是否在<code>main.py</code>代码中使用</p>
</li>
<li><p>否,python导入系统缓存已计算的模块。导入后,任何请求相同模块的导入语句都将从全局注册表返回该模块。这件事有起有落</p>
</li>
<li><p>如果我理解正确的话——这通常是一种不好的做法(在编写库或迁移具有复杂向后兼容性的代码时有一些例外)。您应该将每个模块中的导入视为此模块依赖项的提示,就像函数中的参数一样。它们更清晰、更明确——更容易阅读和理解您的代码。这是你首先应该考虑的主要因素(如果不是唯一的话)</p>
</li>
<li><p>在使用导入功能的模块中保留导入。导入包装器是一个相当奇怪的想法——它可能在罕见的情况下有一些用途,但在正常的日常开发中,它会减少<a href="https://mk0osnewswb2dmu4h0a.kinstacdn.com/images/comics/wtfm.jpg" rel="nofollow noreferrer">true code quality</a></p>
</li>
<li><p>没有区别,一旦您从任何地方的<code>sys</code>(或任何其他模块)请求任何内容,整个<code>sys</code>都将被评估并放入模块注册表。但通常显式导入确实是一件好事<code>from sys import path</code>提示您的模块依赖于<code>Path</code>。类似<code>import sys</code>的内容传达了“我非常依赖<code>sys</code>模块,因此一次导入所有内容更容易”。在第一种情况下,读者期望处理<code>PYTHONPATH</code>的典型工作,在后一种情况下——硬编码系统级“元编程”</p>
<p>此操作的副作用–由于模块作为一个整体导入和缓存,在完成此导入后,从任何其他模块中的<code>sys</code>进行的任何导入都将很快(直到请求强制重新加载或手动更改注册表)</p>
</li>
</ol>