今日内容:
1、循环导入问题
2、py文件的两种用途
3、模块的搜索路径优先级
4、软件开发的目录规范
5、内置函数
6、内置模块
1.run.py
x=1
import m1
print(m1.x)
print(m1.y)
m1.f1()
import m2
m2.f2()
2.m1.py
print('正在导入m1')
def f1():
from m2 import y
print(x,y)
x='m1'
3.m2.py
print('正在导入m2')
def f2():
from m1 import x
print(x,y)
y='m2'
一:模块的搜索路径与查找优先级
(1) 先从内存中已经导入的模块里找
import mmm
mmm.f1()
import time
time.sleep(15)
print('='*50)
import mmm
mmm.f1()
(2) 然后再查找内置的模块
import sys
print(sys.modules)
import sys
print(sys.path)
当前执行文件所在的文件夹
import logging
print(logging)
(3) 最后去sys.path列表中存放的多个文件夹里依次检索
示例1:
import sys
print(sys.path)
sys.path.append(r'D:\python全栈15期\aaa\bbb')
import ccc
ccc.f1()
示例2:
import sys
print(sys.path)
import aaa.bbb.ccc as c
c.f1()
from aaa.bbb import ccc
ccc.f1()
区分py文件的两种用途:
#1、直接运行
#2、被当作模块导入
import spam
def f1():
print('spam.f1')
def f2():
print('spam.f2')
print(__name__) # 当文件被当作脚本直接执行时,__name__值为"__main__"
print(__name__) # 当文件被当作模块导入时,__name__值为"模块名"
if __name__ == '__main__':
print("文件被当作脚本执行时要做的事情")
f1()
f2()