python基础:模块的搜索路径、pyc临时文件、内置属性

当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
由sys模块的sys.path方法来规定

因为sys.path返回的数据类型是列表
1、列表可以修改、我们导入的范围也可以通过修改sys.path这个列表获得暂时的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。
2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜索。而且sys.path第一个路 径是脚本的当前路径,所以禁止大家讲自己的脚本命名成模块的名称。
因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。
在这里插入图片描述

pyc临时文件
为了提高加载模块的速度,python解释器会在__pycache__目录中下缓存每个模块编译后的版本,之后,再次被导入时,实际上导入的是这个.pyc的临时文件。
在这里插入图片描述

把模块当做脚本运行
我们可以通过模块的全局变量__name__来查看模块名:
当做脚本运行:
name 的值 等于’main
当做模块导入:
__name__的值等于模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if name == ‘main’:
创建model03.py文件,其程序是:

 name='haitao'
    print(__name__)  #__name__是内置属性  打印出来是 __main__
    #__main__
if __name__ == '__main__':
    print('xxx')      #  xxx

模块当脚本运行时,name = ‘main
模块被导入时,name 就是模块变量名称,在被调用时,其
测试代码将不会执行。

import model03
print(model03.__name__)      

运行结果:

model03
model03

内置属性的两个作用:

#1、根据__name__的值可以写测试代码:
# 根据__name__的值可以写测试代码
# if __name__ == "__main__":
if __name__ == '__main__':
        print('xxx')


# 2、做测试入口
def func():
    print('程序开始了')
def func1():
    print('程序结束了')
if __name__ == '__main__':
    func()
    func1()

运行结果:

程序开始了
程序结束了

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/86099818