Python学习-Day16

1.循环导入问题

执行文件///////

# 解决循环导入问题就是在做着屎上雕花的事,尽量不要让它出现,如果你很不幸遇到

# 了,那就用函数来试着解决吧!

x =1

import m1

#

# print(m1.x)

# print(m1.y)

#

m1.f1()

import m2

m2.f2()

模块1//////

print('正在导入m1')

# from m2 import y

# x = 'm1'      # 这样写根本就执行不到x这个语句它会在m1和m2的导入语句之间反复横跳

# x = 'm1'

# from m2 import y  # 这样写只是临时抱佛脚,如果代码多呢??

def f1():

from m2import y

x ='m1'  # 写入函数这个‘花’就还不错了,因为函数是在调用的时候才会运行

模块2///////

print('正在导入m2')

# from m1 import x

# y = 'm2'      # 这样写根本就执行不到x这个语句它会在m1和m2的导入语句之间反复横跳

# y = 'm2'

# from m1 import x  # 这样写只是临时抱佛脚,如果代码多呢??

def f2():

from m1import x

y ='m2'  # 写入函数这个‘花’就还不错了,因为函数是在调用的时候才会运行

2,区分py文件的两种用途

# py文件的两种用途:

#1、直接运行

#2、被当作模块导入

import spam

spam.f1()

def f1():

print('spam.f1')

def f2():

print('spam.f2')

# print(__name__)  # 当文件被当做脚本直接执行时,__name__值为__main__

# print(__name__)  # 当文件被当做模块被导入时__name__值为模块名

if __name__ =='__main__':

print('文件被当做脚本执行时要做的事')

f1()

f2()

3,文件搜索与查找文件的优先级

# 一:模块的搜索路径与查找优先级

# (1) 先从内存中已经导入的模块里找

# import mmm

# mmm.f1()  # 这里做一个实验我们先自定义一个模块导入

#

# import time

# time.sleep(15)  # 让程序暂停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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容