番外篇:模块

  • 模块概念
    • 1、什么是模块
    • 2、为何要用模块
  • 模块的使用
    • 首次导入模块发生的事情
    • 不要一行导入多个模块
    • 为导入的模块起别名,简化代码
    • 直接从模块导入名称
    • 一次导入模块所有名称,只适合少数情况
    • 总结

模块概念

1、什么是模块

模块就是一个功能的集合体,不是用来直接运行,而是用来被导入使用的

  • 模块分为三大来源:
    1、内置的模块
    2、第三方模块
    3、自定义的模块

  • 模块分为四种类别:
    1、一个py文件就是一个模块
    2、一个文件夹也是一个模块=》包
    3、已被编译为共享库或DLL的C或C++扩展
    4 使用C编写并链接到python解释器的内置模块

2、为何要用模块

  • 使用别人的模块:
    1、拿来主义,提升开发效率

  • 自定义模块:
    1、别人的功能不够用了,需要自己的去编写
    2、解决代码冗余

模块的使用

  • 语法:
    在程序的开头写入:import 模块名,不用带上.py

首次导入模块发生的事情

  • 1、触发被导入的模块的运行,产生一个模块的名称空间,把模块中的名字都丢进去
  • 2、会在当前执行文件中得到导入的模块名,该名字是指向被导入模块的名称空间

之后的导入,导入的模块名直接引用首次导入产生的名称空间,不会再执行模块的内的代码了

模块名.模块内名称  # 通过这个语法便能调用模块空间内对应的数据了
# 如:
import time  # 为模块time开辟名称空间
time.time()  # 调用模块空间time内的time()函数

不要一行导入多个模块

虽然语法上允许,但为了逻辑清晰,程序员们约定俗称用多行来导入各个模块
一行导入多个模块的语法:

import m1, m2, m3, m4

为导入的模块起别名,简化代码

当模块名过长时,正常方法下每次调用模块内数据,都要写入 模块名.名称,导致代码冗长
语法:

import 模块名 as 别名
# 如:
import time as t

之后再调用该模块下值的时候:

别名.名称
# 如:
t.sleep(999999999)

直接从模块导入名称

语法:

from time import time,strftime,sleep
'''
改名代码底层步骤:第一步、开辟time模块的名称空间第二步、并将导入的名称的内存空间赋值:time = time.timestrftime = time.strftimesleep = time.sleep这一步并不会改变值所在的空间的位置。
'''
  • 重点注意:
    起别名时开辟的time的名称空间,并不代表只导入了改名的名称,time模块下的所有名称都会导入。
    但只有改名的名称将内存地址赋值给主程序空间。

一次导入模块所有名称,只适合少数情况

语法:

from 模块名 import *

实际上就是利用了 * 号接收多个值的能力

  • 易错点:
    肉眼看不出导入了哪些名称的内存地址,如果开发过程中,主程序创建了同名名称,便会将其覆盖,导致对应模块的名称内存地址被覆盖,使其失去效果,所以只有少数情况才会使用该方法。

总结

不同空间值的调用也会不同,比如模块中函数用global修改了其全局空间的money变量,导入该函数(该函数的内存地址)给主程序后,使用它并不会修改主程序全局空间的money变量,区分空间乃重中之重。

python学习 番外篇之模块相关推荐

  1. 动手学深度学习番外篇 01.为什么from d2l import torch as d2l

    动手学深度学习番外篇 01.为什么from d2l import torch as d2l 在跟着网站动手学深度学习学习的时候,发现代码开头中经常要运行这样一句话 from d2l import to ...

  2. 通过游戏编程学Python(番外篇)— 单词小测验

    通过游戏编程学Python 通过游戏编程学Python(6)- 英汉词典.背单词 通过游戏编程学Python(番外篇)- 乱序成语.猜单词 通过游戏编程学Python(5)- 猜成语(下) 通过游戏编 ...

  3. lua 去除小数点有效数字后面的0_【物联网学习番外篇】Lua脚本编程扫盲

    在后面的物联网教程中,我们很快就会接触到Lua这个脚本语言,那么本篇内容结合后续的一些需要的开发点,针对Lua零基础的读者写一篇入门扫盲文章. 01 Lua 介 绍 Lua是一个小巧的脚本语言,其目标 ...

  4. 【学习番外篇】Firefly ROC-RK3328-CC刷Ubuntu18.04+VNC

    文章目录 前言 一.准备工作 二.烧录系统 1.下载对应的烧写工具 2.启动系统 三.连接Windows和远程管理可视化桌面 1.连接putty 2.在putty下联网 3.重点!!!安装桌面环境及V ...

  5. 【大数据学习番外篇之爬虫3】爬美女照片

    为什么猪会说谎?因为它们不想被揭穿是猪! 1. 为什么小鸟总是歌唱?因为它们不会说话! 2. 为什么光头强不喜欢去博物馆?因为里面都是古人的头发! 3. 为什么鱼不喜欢唱歌?因为它们会唱跳不动! 4. ...

  6. Python爬虫番外篇之Cookie和Session

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

  7. 番外篇(1)模块次序表、代数环及其检测算法

    文章目录 模块次序表 直通模块与端点模块 代数环简介 模块次序表需要注意的其它细节 缺少一次更新的加法器 直通模块交叉1:DFS的问题 直通模块交叉2:BFS的问题 重排算法与代数环检测 其它容易出错 ...

  8. swft入门学习番外篇-创建项目

    创建一个简单地项目文件,需要一下几个步骤 1.File->New->Project;  新建一个新的项目 2.Application->Single View Application ...

  9. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...

最新文章

  1. Java学习总结:32(Runtime类)
  2. Swift和Java在函数(method/方法)方面的比较
  3. 字段对应数组_字段不同的多个工作薄汇总? 还要固定字段位置 !难不倒我!...
  4. Python数据可视化之Matplotlib实现各种图表
  5. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  6. 【撸码师的备忘录】java对redis的基本操作
  7. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识
  8. Python中abs()和fabs()方法之间的区别
  9. 国庆档首日票房破2亿 长津湖票房占比过半
  10. gsonformat安装怎么使用_json解析—Gson以及GsonFormat插件的运用
  11. 读《反欺骗的艺术》有感
  12. 拒绝访问,文件或目录损坏且无法读取解决办法
  13. 华为手机相册怎么镜像翻转_怎么制作照片视频?利用手机相册快速制作卡点视频...
  14. 导航栏背景色、标题颜色以及返回键自定义
  15. js 格式化prettier配置_使Prettier一键格式化WXSS
  16. 美通企业周刊 | 中国全球化品牌50强榜单发布;酩帝诗威士忌拍出近21万美元天价...
  17. 【建议星星】要就来45道Promise面试题一次爽到底
  18. 单点登录(SSO)、CAS介绍
  19. freenom又行了-免费顶级域名白嫖一年,赶紧看看如何申请
  20. 【模电知识总结】二极管

热门文章

  1. 目标检测之六:OHEM 在线难例挖掘
  2. 双极权电阻网络串联电阻阻值推导
  3. JS控制网页滑动顶部导航条变色
  4. 【Twitter API开发者账户协议必知】
  5. java函数式编程之Supplier
  6. 国内芯片产业发展进入深水期,“从无到有”的任务已经顺利完成
  7. bim展示 java_一种BIM展示的方法与流程
  8. linux环境下如何卸载一路赚钱(yilu/mservice)
  9. hdfs 目录设置配额 、查询配额使用情况 、清除配额
  10. 硬盘也能双动力?混合硬盘游戏实际体验