模块、包

  • 1.模块导入的方式
  • 2.使用as给模块取一个别名(大驼峰命名法)
  • 3.从模块中导入部分工具
  • 4.从模块中导入全部工具
  • 5.模块搜索顺序
  • 6__name__
  • 7.包
  • 8.发布模块、安装模块、卸载包
  • 9.pip安装第三方模块

本系列博文来自学习《Python基础视频教程》笔记整理,视屏教程连接地址:http://yun.itheima.com/course/273.html

模块:每个以.py 结尾的源代码文件就是一个模块。模块名也是一个标识符,所以需要满足标识符的命名规则。在模块中定义的全局变量、函数、类,都是提供给外界直接使用的工具。模块就好比工具包想要使用这个工具包,就需要先导入这个工具包。

模块是最高级别的程序组织单元。模块被导入后,在该模块文件定义的所有变量名都会以被导入模块对象成员的形式被调用。也就是说,模块文件的全局作用域变成了模块对象的局部作用域。即模块能够划分系统的命名空间,避免了不同文件变量重名的问题。

1.模块导入的方式

方式1

import 模块1,模块2

方式2(官方推荐使用)

import 模块1
import 模块2

导入之后使用 模块名.方法 的方式调用模块内的工具

2.使用as给模块取一个别名(大驼峰命名法)

import 模块名 as 模块别名
import numpy as np

3.从模块中导入部分工具

from 模块名 import 工具名

直接使用工具名调用工具,不需要加**模块名.**来调用工具

注意事项:两个不同的模块中,导入相同名字的函数,后面导入的函数会覆盖掉前面导入的函数。

可以通过给同名函数中的一个起别名的方式来解决这个问题

#from cyy_01_测试模块1 import say_hello
from cyy_02_测试模块2 import say_hello as module2_say_hello
from cyy_01_测试模块1 import say_hello
say_hello()
module2_say_hello()

输出

我是模块1
我是模块2

将带入代码全部写在文件的顶部,一旦发现冲突能够及时处理

4.从模块中导入全部工具

from 模块名 Import *

便利:不需要模块名就能够调用工具
缺点:函数重名现象没有任何提示,出现问题不好排查
72-76

5.模块搜索顺序

模块的搜索顺序:在当前目录 搜索 指定模块名的文件,如果有就直接导入;如果没有就再搜索系统目录。
注意: 给一个文件命名时,不要和 系统模块的文件名 重名,这样可能会导致程序无法执行

6__name__

每一个文件都应该是可以被导入的,当导入文件时,文件中所有没有任何缩进的代码都会被执行一遍。
模块可以提供全局变量、函数,类。但是,直接执行的代码不可以向外界提供的工具。
当文件被导入时,会直接执行的代码实际上不需要执行,这时需要使用__name__这个属性。\

__name__属性在本文件执行时,是__mian__的值,但是文件作为模块执行时,对应的值是模块名称。所以可以应用这个特性来编写文件对的测试代码,在设计模块代码时,可以采用下面的结构测试代码。

#导入模块
#定义全局变量
#定义类
#定义函数#编写测试代码
def main():#....pass
if __name__=="__main__"main()

80

7.包

包:是一个包含多个模块(一个文件就是一个模块)的特殊目录,这个特殊的目录 有一个 特殊的文件 :__init__.py
包命名 和 变量的命名方式一样,用小写字母+_来命名

优点:使用 import 包名,可以一次性导入 包 中的所有模块

新建一个包有两个步骤:
step1:新建一个文件夹,在文件夹中编写 需要给外界提供的.py文件和__init__.py文件

step2:在__init__.py中填写内容

具体操作如下:
step1 : 新建一个包,两种方法:
1.1新建一个Directory,在该目录下再新建一个__init__.py文件


1.2.直接新建 Python Package,输入包的名字后,在新建的目录下会自动包含一个空白的__init__.py文件


step2 : 新建好包目录,在该目录下编辑各种模块,在__init__.py文件中 指定对外界提供的模块列表

from . import send_massage
from . import receive_massage
.表示从当前目录下导入摸一个模块

综上:当多个模块有关联时,就可以整合成一个包

8.发布模块、安装模块、卸载包

如果希望自己开发的文件,分享给其他人,可以制作压缩包分享给其他人。
step1: 制作压缩包,setup.py文件

from distutils.core import setup
setup(name=“cyy_massage”,
version=“1.0”,
description=“itheima’s 发送和接受消息”,
long_description=“完整的发送和接收消息的模块”,
author=“itheima”,
author_email=“xxxxxxx@163.com”,
url=“www.xxx.com”,)

setup.py文件格式固定,不能在pycharm 中执行,只能在终端中执行。并且希望在什么环境下运行,就使用相应版本的python解释器。

step2: 构建,模块

python3 setup.py build

step3: 生成发布压缩包

python3 setup.py sdist
生成一个.tar.gz 的文件,可以分享给别人

其他人如果拿到了这个.tar.gz这个文件夹之后,可以安装这个模块:先解压缩这个文件,使用usdo 执行setup.py 安装文件

tar zxvf cyy_massage-1.0.tar.gz

PKG-INFO文件中保存着包的基本信息,可以通过下面命令查看基本信息

cat PKG-INFO

sudo python setup.py install

卸载模块:直接从安装目录底下删除就可以了
导入模块->模块名.__file__查看模块的完整路径切换到对应的文件下删掉那个文件就可以了

rm -r XXX

9.pip安装第三方模块

第三方模块:知名团队 开发出来,并且 被广大程序员 广泛使用 的Python包/模块。

pygame:一套非常成熟的游戏开发模块

pip是一个现代的的、通用的python包管理工具。提供了Python包的下载、安装、查找、卸载等功能。

安装命令:

sudo pip install 模块名

卸载命令;

sudo pip uninstall 模块名

将模块安装到Python 3.x 下要使用pip3

sudo pip3 install 模块名

sudo pip3 uninstall 模块名

python 下安装ipython

sudo apt install ipython

Python(27)-模块相关推荐

  1. python第三方模块—psutil模块

    系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息, ...

  2. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  3. python email模块

    python email模块 官方文档 email模块 电子邮件包是一个用于管理电子邮件消息的库.它的特殊设计不用于向SMTP (RFC 2821).NNTP或其他服务器发送任何电子邮件消息;这些是模 ...

  4. Day05 - Python 常用模块

    1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模 ...

  5. 中文自然语言处理(NLP)(三)运用python jieba模块计算知识点当中关键词的词频

    前两次链接:中文自然语言处理(NLP)(一)python jieba模块的初步使用       中文自然语言处理(NLP)(二)python jieba模块的进一步学习和xlrd模块 续上次的随笔之后 ...

  6. python查看模块功能_Python模块Os系统功能

    Os模块简介系统功能 python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关. OS模块使用实例 执行dos命令 Python os.sys ...

  7. python日历模块_Python日历模块| firstweekday()方法与示例

    python日历模块 Python calendar.firstweekday()方法 (Python calendar.firstweekday() Method) firstweekday() m ...

  8. python之模块calendar(汇集了日历相关的操作)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #calendar日历模块import calendar#3个大类: calendar.Calendar(fi ...

  9. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

最新文章

  1. [MySQL FAQ]系列 -- 为何innodb表select count(*)很慢
  2. 更强、更稳、更高效:解读 etcd 技术升级的三驾马车
  3. 【PAT甲级 BigInteger运算】1024 Palindromic Number (25 分) Java 全部AC
  4. C和指针之Eratosthenes-埃拉托斯特尼筛方法找质数
  5. java 内部编码_Java 中文编码分析
  6. 学习笔记7-C语言-进制转换、原返补、位运算、函数
  7. python用matplotlib画图时将标签竖着显示
  8. pythonutf-8是不是二进制_python集合、字符编码、bytes与二进制
  9. 图像/视频超分之BackProjection
  10. 离线发布bolg----使用Windows live writer客户端来发布CSDN的博客文章
  11. 基于Matlab深度学习的驾驶员疲劳检测系统
  12. 日置BT3562无法开机怎么办,日常如何进行保养
  13. matlab矩阵二阶微分方程求解,MATLAB解含参数方程、矩阵方程、二阶微分方程组
  14. mysql front连接_如何用MySQL-Front远程连接MySql?
  15. matlab 指定ccs编译器,在CCS5.5中导入CCS3.3工程——指定编译器和修改prj文件
  16. 提供一个中国身份证号码判断的类
  17. 【数学】三角函数小题
  18. 随机梯度下降法的数学基础
  19. android ndk如何安装,android NDK安装
  20. Vim文本编辑器及文本处理常用操作

热门文章

  1. wince中重启网卡
  2. 低代码开发平台_低代码开发平台测评——伙伴云
  3. mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???
  4. 深度学习 用户画像_一文告诉你什么是用户画像
  5. 【转】.net框架读书笔记---CLR内存管理\垃圾收集(三)
  6. 【转】SharePoint 2013 开发——开发并部署webpart
  7. node.js android 聊天,Node.js实现简单聊天服务器
  8. HDFS--分布式文件系统
  9. 【POJ - 1050】To the Max (dp)
  10. 【牛客 - 317F】小a的子序列(线性dp,tricks)