1.类关联模块的导入
直接将两个关联的模块全部导入,就可以实现类关联
用户发表文章
创建用户对象
发表文章,文章对象
//
from article.models import Tag #如果要用类关联,就导入两个关联的类
from article.models import Article
tag=Tag('admin') #-->tag就是通过导入Tag类创建的
i=Article('个人总结','家伟')
tag.publish_article(i)
#如果是article包中的模块想用外部的calculate.py ,就涉及内部模块调用外部模块,
#因为calculate是在项目底下,而models在article包底下,
#项目地下的模块直接 import calculate 即可 ,
#项目》包中的models from article import models
以下为模块被循环导入
//
"""
模块循环导入
A:模块
def test():
f()
B: 模块
def f()
test()
造成这种情况是架构出问题了,你引用我,我又引用你,无限循环导入
这是一种错误的方式,
在大型py项目中,需要很多python,由于架构不当,会出现相互引用模块
避免产生循环导入:
1.重新架构
1.from导入马上会使用名字,极容易出现错误,建议循环导入情况下,使用import导入
# 2.先提前产生名字,在导入模块
# 3.在导入逻辑放在函数中,将导入的逻辑延后到函数的调用,只要调用在产生名字后即可
# 4,if __name__=='__main__': 该方法可以阻止一个无用代码被重复调用多次
# 5.把导入的语句放在最后,先让函数们加载完
"""
循环导入导致的问题:
两个模块直接相互导入,且相互使用其名称空间中的名字,但是有些名字没有产生就使用,就出现了循环导入问题
解决循import m4环导入问题:延后导入 - 但产生对方要使用的名字,再去完成导入对方
1.from导入马上会使用名字,极容易出现错误,建议循环导入情况下,使用import导入
2.先提前产生名字,在导入模块
3.在导入逻辑放在函数中,将导入的逻辑延后到函数的调用,只要调用在产生名字后即可
4,if name==‘main’: 该方法可以阻止一个无用代码被重复调用多次
5.把导入的语句放在最后,先让函数们加载完
//
#模块的循环导入1.py
import 模块的循环导入2
def task1():
print('--------------task1----------------')
def task2():
print('--------------task2----------------')
模块的循环导入2.func()
#模块的循环导入2.py
def func():
print('循环导入2 里面的func --1--')
from 模块的循环导入1 import task1 #重点! 解决模块循环导入的解决办法 放入函数中导用,函数结束后他自己也结束了
task1()
print('循环导入2 里面的func --2--')
if __name__=='__main__': #还有一种方法是name=main,可以阻止多次无用调用,让界面更整洁
func()
//
# import 模块的循环导入1 #模块1加载模块2时 先执行的就是import 那么import会导致重回模块1中,所以不将他放到头部,放到函数内调
# 这就将导致每次循环导入的第二次时,就会被函数func阻断,实现了终止循环导入的目的
#
# 循环导入导致的问题:
# 两个模块直接相互导入,且相互使用其名称空间中的名字,但是有些名字没有产生就使用,就出现了循环导入问题
#
# 解决循import m4环导入问题:延后导入 - 但产生对方要使用的名字,再去完成导入对方
#
# 1.from导入马上会使用名字,极容易出现错误,建议循环导入情况下,使用import导入
# 2.先提前产生名字,在导入模块
# 3.在导入逻辑放在函数中,将导入的逻辑延后到函数的调用,只要调用在产生名字后即可
# 4,if __name__=='__main__': 该方法可以阻止一个无用代码被重复调用多次
# 5.把导入的语句放在最后,先让函数们加载完