模块的概念

一个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. 【转】反编译获取任何微信小程序源码(完)

    一.前言最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了一个阿里妈妈淘宝客小程序的前端实现,过程一言难尽,差不多两周时间过去了,发现小程序的坑远比想象的要多的多!!在实际练手 ...

  2. CEF3设置cookie

    #include "CEF3Helper.h" #include "../include/cef_app.h" #include "../includ ...

  3. 《Linux设备驱动程序》第三版 scull编译 Ubuntu18.04

    0 准备工作. 0.0 系统环境:Ubuntu18.04.1 amd64. 0.1 安装必要软件包 1 sudo apt install build-essential bison flex libs ...

  4. 关于PHP中token的生成的解析

    背景 很多时候我们需要用 token 来作为一些标识, 比如: 一个用户登录后的认证标识. 实现方式 md5 的方式: $v = 1; // 自己定义的 需要hash 的value 值 $key = ...

  5. idea 启动web项目

    1>Run>Edit Configurations... 2>Server>Open browser>URL>http://localhost:8888/demo2 ...

  6. 人脸替换(FaceSwap)的一些思考

    本文链接:https://blog.csdn.net/cy1070779077/article/details/85224347人脸替换(FaceSwap)的一些思考 最一开始,我使用了openCV( ...

  7. socat管理haproxy配置 ssh-keygen -N '' -t rsa -q -b 2048

    socat管理haproxy配置   haproxy是可以通过socat命令管理haproxy.cfg文件的:1.安装socat yum install socat -y 2.配置haproxy.cf ...

  8. Tosca 添加 modules,添加Library,引用重复步骤

    #增加modules modules模块式基础,好像一切都得从modules开始,想下面这样一个简单的login module就建好了 把这个module login 拖到具体的test case上 ...

  9. 使用AWS Lambda,API Gateway和S3 Storage快速调整图片大小

    https://www.obytes.com/blog/2019/image-resizing-on-the-fly-with-aws-lambda,-api-gateway,-and-s3-stor ...

  10. Web 性能压力测试工具之 Siege 详解

    Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行.s ...