Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 2或3循环导入说明_Python_Import - Fatal编程技术网

Python 2或3循环导入说明

Python 2或3循环导入说明,python,import,Python,Import,我知道这个问题已经被问过/回答过很多次了,但我对我的具体情况很好奇——我还没有看到一个我完全理解的答案 有几个模块导入同一个模块是否不好?所以,假设我有一些通用实用程序模块,我重用了很多,modulex.py和moduley.py都导入了它。然后说modulex需要导入moduley。在这一点上,我引入了坏的jujuju吗?如果M持有一些全局状态,然后被一些N*模块修改,那么将导入模块M与模块N1、N2、N3相乘是不好的。然后,副作用的发生取决于导入顺序 通常在干净的代码中,情况并非如此,如果您

我知道这个问题已经被问过/回答过很多次了,但我对我的具体情况很好奇——我还没有看到一个我完全理解的答案


有几个模块导入同一个模块是否不好?所以,假设我有一些通用实用程序模块,我重用了很多,modulex.py和moduley.py都导入了它。然后说modulex需要导入moduley。在这一点上,我引入了坏的jujuju吗?

如果
M
持有一些全局状态,然后被一些
N*
模块修改,那么将导入模块
M
与模块
N1
N2
N3
相乘是不好的。然后,副作用的发生取决于导入顺序


通常在干净的代码中,情况并非如此,如果您只持有类定义和函数,以及不可修改/修改的全局变量,那么您应该完全没有问题。

No,这是完全正常的,除非您的模块级代码中有副作用。如果模块M有一个类变量,该变量由导入它的模块修改,该怎么办?或者,这就是你所说的“仅保留类定义和函数”的意思吗?是的,这就是这个答案所描述的那种情况,“如果
M
保留一些全局状态”-一般来说,设计模块使其具有可变的模块级变量是一个坏主意,正是出于这个原因。有一些特殊情况是有意义的,但是你应该避开它们,除非你确定自己知道自己在做什么。虽然它并不完全包含可变变量,但内置的
记录器
模块可以作为考虑何时在多个导入中共享模块级状态的起点。