Python导入订单是否重要

Dus*_*sty 11 python

在这里阅读有关import在Python中对语句进行排序的信息,但如果要导入的内容需要尚未导入的依赖项呢?这是编译语言和解释之间的区别吗?我来自JavaScript背景,加载脚本的顺序很重要,而Python似乎并不关心.谢谢.

Joh*_*ica 19

导入顺序无关紧要.如果模块依赖于其他模块,则需要自己导入它们.Python将每个.py文件视为一个独立的单元,直到该文件中可见的为止.

(从技术上讲,更改导入顺序可能会改变行为,因为模块可以具有在首次导入时运行的初始化代码.如果初始化代码具有副作用,则模块可能会相互交互.但是,这将是一个设计缺陷在这些模块中.导入顺序不重要,因此初始化代码也应该写入,不依赖于任何特定的顺序.)

  • 如果模块的 `__init__` 行为有副作用,导入顺序可能很重要。例如,导入 TensorFlow 将消耗可用的 GPU 总内存。如果您在导入 TensorFlow 后尝试导入 Caffe,Caffe 将无法从 GPU 中获取任何内存资源。对于定义冲突设置或锁定文件的扩展模块,可以有更简单的事情。“导入”只是意味着“执行一些代码”。这在广泛使用的库中如此普遍,以至于说导入顺序无关紧要是没有用的,因为导入时的副作用是一种不好的做法。 (3认同)
  • 如果使用(不推荐)“ from package import *”范例,则也有可能覆盖定义。例如,这发生在`from math import *`和`from numpy import *`中。 (2认同)

Tym*_*aul 7

不,它没有,因为每个python模块应该是自包含的并导入它需要的一切.这适用于导入整个模块以及仅导入其中的特定部分.

  • 正如下面已经评论的:导入顺序*不应该*重要,但有些包确实重要。 (2认同)

小智 5

导入标准 Python 库/模块时,Python 导入顺序无关紧要。但是,顺序对您的本地应用程序/库特定导入很重要,因为您可能会陷入循环依赖循环,因此请在导入之前查看。