#1.以自己的理解总结为什么会出现循环导入,并用代码举例说明
#m1.py
import m2
x = 10
print(m2.y)
#m2.py
import m1
y = 20
# 当执行m1.py时, 先执行import m2语句 指向m2.py的名称空间,
# 在m2.py中执行 import m1 指向m1的名称空间, 再执行x = 10,
# 在执行print(m2.y)时m2的名称空间并没有y = 20这个申明, 所以报错。
#2.如何来解决循环导入,并解决第1题中的循环导入问题
# 将模块导入在对象申明之后即可
# m1.py
x = 10
import m2
print(m2.y)
# m2.py
y = 20
import m1
print(m1.x)
#3.完成housework.py文件,拥有三个功能:sweep、wash、cook,自定义功能实现(函数体),从文件自执行和作为模块使用两方面,
#验证三个功能,且两方面使用方式可以共存
#run.py
import sys
import os
sys.path.append(os.path.dirname(__file__))
print(sys.path)
import housework
housework.sweep()
housework.wash()
housework.cook()
#housework.py
def sweep():
print("sweep")
def wash():
print('wash')
def cook():
print('cook')
if __name__ == '__main__':
sweep()
#4.导入模块的搜索路径有哪些?它们的优先级是?
#内存 > 内置 > sys.path的路径顺序遍历 自定义模块(自己写的,系统写的第三方,别人写的第三方)
#5.现有一个run.py