| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python模块:模块搜索顺序、内置属性(__file__和__name__)、开发原则 -> 正文阅读 |
|
[Python知识库]Python模块:模块搜索顺序、内置属性(__file__和__name__)、开发原则 |
目录 一、模块的搜索顺序1》Python解释器在导入模块时,对模块文件的搜索顺序:搜索顺序:
提醒:在开发时给文件起名,不要和系统的模块文件重名,如果重名可能导致原本能正常执行的程序就没办法执行了。 代码示例:
正常执行结果:随机生成一个79的数字 ? 注意:如果当前目录下存在一个random.py的文件,程序就没办法正常执行了。这个时候,Python的解释器会加载当前目录下的random.py,而不会加载系统的random模块。 2》文件和模块同名报错验证:新建一个random.py文件和模块同名,可以看出PyCharm也给我们提示了(randinth函数有个灰色底纹),此时再来运行文件,报错 3》 模块内置属性__file__
分别从两种情况来看看完整路径: 1.random.py文件存在,和模块名冲突情况,如下图: ? 2删除random.py文件: 点击右键打开面板点击Delete,出现一个对话框点击OK后继续出现一个面板,这里我们点击Delete Anyway。 删除提示信息,random文件已经被其他文件件导入了,是否确定删除 3.删除后运行代码,查看random模块完整路径,如下图: ? 二、开发原则原则:
代码验证:文件中所有没有任何缩进的代码都会被执行一遍 md_模块文件代码:
md_测试导入文件代码:
执行测试导入文件代码结果: 可以看出,模块中的输出代码也被打印出来了,模块可以看作是工具包,模块向外界提供工具——全局变量、函数、类。上面模块中利用print输出的代码并不是提供的工具——直接执行的代码不是向外界提供的工具! 遇到一个问题:模块文件被导入时,能够直接执行的代码不需要被执行。 做个假设: 在小夏的模块文件中写了个函数,并调用函数测试这个函数是否可以正常运行。 代码如下:
测试导入文件执行代码结果: 后台输出了分隔线,但是把小夏在模块中测试的代码也输出了,而这些测试代码并不需要被执行,如何就解决这个问题呢?利用__name__属性,请继续往下看! 三、内置属性__name__1》实际开发场景:
2》__name__属性:
3》代码测试演练:1.在模块中执行__name__,执行结果永远都是__main__ 2.被其他文件导入,在md_测试导入文件中执行结果——模块文件名: 3.让测试代码只有在执行模块时才会被运行 利用执行模块,__name__属性保存在字符串永远都是__main__这一点来进行判断:把测试代码放在判断里. 代码:
模块文件依旧可以正常运行: 测试导入文件执行结果:测试代码不会被执行 ? 4》在很多Python文件中都会看到以下格式的代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 13:27:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |