在C语言中,代码可以组织成多个项目。假设我有两个项目ProjectA和ProjectB。我可以设置ProjectB来引用ProjectA。一旦我这样做了,ProjectB中的类就可以使用ProjectA中定义的类。但是ProjectA中的类不能使用ProjectB中定义的类,ProjectA也不能引用ProjectB。你知道吗
在python中是否有与此等价的东西?我认为python中的包相当于C#中的项目。但似乎没有什么可以阻止python中包之间的循环依赖关系。我可以在PackageB中有模块参考PackageA中的模块,同时在PackageA中有模块参考PackageB中的模块。这会很快演变成一个由包之间的依赖关系组成的混乱网络。你知道吗
python中是否有构造或工具可以像c#中的项目那样防止循环依赖?你知道吗
Python允许循环依赖,但很少有用。你知道吗
不过,一般来说,相互依赖的两个包不被认为是循环依赖,只有两个模块。前
你知道吗模块b.py你知道吗
你知道吗模数a.py你知道吗
但是,像这里提到的循环依赖项是行不通的,默认的导入机制不允许这样做,并且您会得到一个错误,或者导入会一直互相调用,直到您遇到堆栈溢出,除非您实现导入钩子来解决它。你知道吗
如果模块包装从…进口某物包装B.moduleA,和组件B.moduleB进口自模块包装,这是允许的。你知道吗
答案是否定的:一个包
A
无法检测到它所依赖的另一个包B
再次导入了A
。这是因为import
如果目标已被导入其他地方,则不会执行任何代码。你知道吗这是模块之间的直接循环,而不仅仅是包,而且仍然有效:如果先导入
A
,则B.foo.A
将成为对不完整的A
(没有go
)的引用,但这在调用use
之前并不重要。不完整的引用是在没有任何通知或检查的情况下创建的。你知道吗相关问题 更多 >
编程相关推荐