模块的概念

一个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. Tensorflow object detection API(1)---环境搭建与测试

    参考: https://blog.csdn.net/dy_guox/article/details/79081499 https://blog.csdn.net/u010103202/article/ ...

  2. Java设计模式之一单例模式

    什么是单例模式 保证一个系统中的某个类只有一个实例而且该实例易于外界访问.例如Windows界面的任务管理器就可以看做是一个单例. 单例模式的使用场景 需要频繁的进行创建和销毁的对象: 创建对象时耗时 ...

  3. 【微信小程序】scroll-view 的上拉加载和下拉刷新

    1.在微信小程序中,想到 下拉刷新 和 上拉加载,如果是整个页面都拖动的话,可以在页面配置中,配置 enablePullDownRefresh 和 onReachBottomDistance 然后在 ...

  4. Cheat Engine TUTORIAL 教程 (8个步骤)

    https://www.cnblogs.com/ae6623/archive/2011/04/16/4416874.html https://www.52pojie.cn/thread-828030- ...

  5. java判断A字符串中是否包含B字符

    java.lang.String类提供的方法 public boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true. 例如: ...

  6. Spring Boot核心原理

    Spring Boot核心原理 spring-boot-starter-xxx  方便开发和配置 1.没有depoy setup tomcat 2.xml文件里面的没有没有了 @SpringBootA ...

  7. 固定权重 关于Mxnet的一些基础知识理解(1)

    https://blog.csdn.net/pandav5/article/details/53993684 (1)Mxnet的数据格式为NDArray,当需要读取可观看的数据,就要调用: numpy ...

  8. pytorch 想在一个优化器中设置多个网络参数的写法

    使用tertools.chain将参数链接起来即可 import itertools ... self.optimizer = optim.Adam(itertools.chain(self.enco ...

  9. shiro解决一个账号异地登录的问题

    如下,找到session中的信息删除即可,按照这个方式试了下.基本可用 在多台服务器部署时,前提必须实现session共享. /** * 登录认证 * @param token * @return * ...

  10. RabbitMQ 入门教程(PHP版) 延迟队列,延迟任务

    延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...