模块的概念

一个python文件就是一个模块。

模块名同时也是一个标识符,需要符合标识符的命名规则。

在模块中定义的全局变量、函数、类 都是个外界提供的直接使用的工具。

模块就好比工具包,要想使用一个模块,需要先导入它。

模块的导入方式

模块在被导入时,模块中没有任何缩进的代码,会被完全执行一遍。

推荐方法

import 模块名1
import 模块名2

  

不推荐方法

import 模块名1,模块名2

  

模块的别名

模块导入后,可以给模块起别名,别名遵循大驼峰命名规则

格式: import 模块名 as 别名

模块导入的顺序规范

按以下优先级导入

  • 官方标准模块
  • 第三方模块
  • 应用程序模块

部分工具导入(局部导入)

如果指向导入某个模块中的部分工具(全局变量、函数、类),则可以使用部分工具导入方法。

优点:导入的工具可以直接使用,无需使用 模块名.的方法调用。

格式: from <模块名> import <工具名>

工具的别名:

如果导入了两个名字相同的工具,则最后导入的会覆盖前面导入的。为了解决这个问题,也可以使用as关键字来给导入的工具起别名。

别名遵循标识符命名规则

例如:

from xh_25_测试模块1 import module_name as tools1

  

通过form <模块名> import * 导入全部工具(不推荐!了解即可)

通过此方法可以模块的全部工具,但是不推荐!

因为工具重名覆盖不会有任何提示,不便于问题的排查。

模块的导入顺序

  • 在python系统中,内置有系统模块方便用户使用(例如random模块)。
  • 在导入模块时,按照:当前文件目录、python系统模块目录 的顺序进行搜索。
  • 由于存在系统模块目录,在给模块起名时,不要和系统模块名相同。

__file__内置属性

使用:print(模块名.__file__)可输出模块的所在绝对路径。

如果直接print(__file__)则输出当前python文件的绝对路径。

__name__与模块测试代码块

测试代码块

在开发中,通常一个模块中都会写有测试代码块,这些代码块通常会将测试结果输出到控制台。

而导入模块时,模块中没有任何缩进的代码,会被完全执行一遍。

但对于一个模块来说,我们只需要它的工具,并不需要它的测试代码输出测试结果到控制台。

为了解决这个问题,我们需要使用到__name__内置属性。

__name__

__name__属性储存的是文件的模块名。对于当前模块下对它进行的调用,它的值都是字符串"__main__"。

但是!如果这个模块被导入到其它模块,此时__name__属性的值则为被调用模块的值。

解决导入模块时测试代码块输出的问题

利用__name__属性的特性,我们可以使用一个if语句来解决这个问题。

在被导入的模块中,使用if 判断__name__的值,如果是"__main__"(在此模块测试时),则执行if下的测试代码,否则(被导入时),就不执行。

如:

if __name__ == "__main__":
"""if下的区域即为测试区域,测试代码就写在这里"""
print("测试代码正常执行")

  

11 模块、模块的搜索顺序、__file__内置属性、__name__属性的更多相关文章

  1. Python第八天 模块 包 全局变量和内置变量__name__ Python path

    Python第八天  模块   包   全局变量和内置变量__name__    Python path 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Pyt ...

  2. python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)

    面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...

  3. JSP内置对象和属性

      JSP内置对象和属性列举如下: 1.request对象     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的 ...

  4. 【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)

    import os """ 通过文件的路径去打开文件 相对路径:相对当前的工作路径去定位文件位置 .:代表当前路径 ..:代表上一级路径(父级路径) 绝对路径:相对于电脑 ...

  5. 11 The Go Memory Model go语言内置模型

    The Go Memory Model go语言内置模型 Version of May 31, 2014 Introduction 介绍 Advice 建议 Happens Before 在发生之前 ...

  6. EassyUI内置方法与属性

    Jquery插件 easyUI属性汇总 作者: 字体:[增加 减小] 类型:转载 时间:2011-01-19我要评论 找了个时间看了下EasyUI插件,对它的插件感觉是很舒服,特地把Easy UI的大 ...

  7. 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象

    一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...

  8. 34、JavaScript面向对象(内置构造函数&相关方法|属性|运算符&继承&面向对象)

    一.面向对象 1.1 this的指向问题 要看清楚最终的函数调用者是谁. IIFE也被当做函数直接运行,IIFE的this都是window对象 函数的arguments是类数组对象,比如传入的第0项参 ...

  9. JavaScript 常用内置对象(字符串属性、Math对象、Array数组对象)

    1.字符串属性   <script>   var test_var = "I Iove you"; console.log(test_var.charAt(3)) // ...

随机推荐

  1. mac使用crawlab

    这里采用docker-compose的 第一步拉镜像 docker pull tikazyq/crawlab:latest 第二步修改compose文件 docker-compose.yml文件 ve ...

  2. PC 端常用软件

    WPS  金山文档  有道云笔记  格式工厂 运行精灵 UC 遨游 360 Firefox 浏览器 光影魔术手 美图秀秀 2345好压 火绒安全软件 有道云笔记 悟空游戏厅 微信 QQ 迅雷 百度网盘 ...

  3. git 删除文件 、只删除远程仓库文件、更换远程仓库

    一.删除文件 1.克隆远程仓库到本地库. 例如使用ssh方法: git clone git@github.com:xxx/xxx.git 2.对需要删除的文件.文件夹进行如下操作: git rm te ...

  4. Mac和window生成ssh和查看ssh key

    一.MAC系统 mac 系统开始就已经为我们安装了ssh 如果没有安装,首先安装 打开终端:$ ssh -v 查看ssh版本 OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec ...

  5. 文献阅读 | Molecular Architecture of the Mouse Nervous System

    文章亮点: 按level来管理和分析数据,文章有不同stage,每个stage有不同subtype,这应该是一个真tree,而不只是一个进化树,文章里出现最多的进化树把所有的stage都整合了. 空间 ...

  6. 【Java】 rapid-generator 代码生成器

    rapid-generator是一个生成器引擎,让你可以专注与代码生成器模板的编写, 可以生成如ibatis,ibatis3,hibernate,spring_mvc,struts2等等代码. rap ...

  7. Android webview 写入cookie的解决方法以及一些属性设置

    原文地址:https://www.2cto.com/kf/201703/616868.html Android webview 写入cookie的解决方法以及一些属性设置,webview怎么设置写入C ...

  8. 转 mysql 文件系统空间满了

    #######################sample [OIP - 互联网开放平台]在2019-07-28 21:30:11发生10.194.42.19 - - Linux上的监控项[磁盘空间] ...

  9. F5负载均衡 MIBs bigip oid

    F5 MIBs       分组bigip-ltmpool-stat           oid=".1.3.6.1.4.1.3375.2.2.5.2.3.1.1" name=&q ...

  10. 改进初学者的PID-微分冲击

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...