Python(27)-模块

模块、包

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用docker配置深度学习开发环境

文章目录1.底层驱动的安装1.1 操作系统的安装1.2 显卡驱动的安装1.3 cuda的安装2.使用docker配置深度学习开发环境2.1 docker的安装2.2 nvidia_docker的安装2.3 安装过程中的问题2.3.1 docker和nvidia_docker的版本不匹配的问题。2.3.2 解决每次运行docker命令的时候要加sudo.2…

反射全解

反射的概念 反射的引入: Object obj new Student(); 若程序运行时接收到外部传入的一个对象,该对象的编译类型是Object,但程序又需要调用该对象运行类型的方法: 1.若编译和运行类型都知道,使用 instanceof判断后&…

CRegKey 注册表操作

1.简介 CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子键(CRegKey::Open),可以方便的修改一个键的键值(CRegKey::SetValue),也可以查询某…

进程基础

进程的基本概念 程序顺序执行的特征: 1)顺序性:处理机严格按照程序所规定的顺序执行,每一步操作必须在下一步操作开始前执行 2)封闭性:程序在封闭的环境下运行,程序独占资源,资源的状…

用Docker容器自带的tensorflow serving部署模型对外服务

相信很多人和我一样,在试图安装tensorflow serving的时候,翻遍了网上的博客和官网文档,安装都是以失败而告终,我也是一样,这个问题折磨了我两个星期之久,都快放弃了。幸运的是在同事的建议下,我…

C资源

云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对…

面试题汇总---深度学习(图像识别,NLP内容)

文章目录1.基本概念1.1 为什么神经网络中深度网络的表现比广度网络表现好?1.2 推导BP算法1.3 什么是梯度消失和梯度爆炸?1.4 常用的激活函数有哪些?1.5 常用的参数更新方法有哪些?1.6 解决过拟合的方法?数据层面模型层…

Python(28)-文件,os模块

文件1. 文件2. 文件的基本操作3. 读取文件open()3.1 文件指针: 标记从哪一个位置开始读取数据.3.2 文件的打开方式mode3.3 文件按行读取3.3.1 readline()3.3.2 readlines()4.文件输出f.write(),print()5.文件复制5.1 小文件复制(搬家)5.2 大文件复制&…

IOCP的程序

C代码 #include <winsock2.h> #include <mswsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "vld.h" #pragma message("automatic link to ws2_32.lib and…

PaperNotes(3)-图像分割-RCNN-FCN-Boxsup

图像分割算法对比小结1.{基本概念}2.{R-CNN}2.1R-CNN 网络结构选择性搜索算法为什么选择SVM作分类器边框回归2.2{R-CNN 训练}2.3{R-CNN实验结果}2.4{R-CNN语义分割}2.5{补充材料}2.5.1{R-CNN建议区域放缩}2.5.2{IOU阈值设置不一样的原因}2.5.3{Bounding-box回归修正}2.6{R-CNN存…

Python模块(3)--PIL 简易使用教程

PIL模块-用与记1.图片导入Image.open()2.图像显示.show()4.查看图片属性.format,.size,.mode3.图像格式转换.convert()4.图像模式“L”&#xff0c;“RGB”,"CYMK"5. 图片旋转.rotate()旋转方式1&#xff1a;旋转不扩展旋转方式2&#xff1a;旋转扩展旋转方式3&#…

输入输出系统

I/O设备&#xff1a;输入输出和存储功能的设备 I/O设备的分类 按传输的速度&#xff1a; 低速设备&#xff08;如键盘、鼠标、语音输入输出设备&#xff09; 中速设备&#xff08;如行式打印机、激光打印机等&#xff09; 高速设备&#xff08;如磁带机、磁盘机、光盘机等&…

模拟银行家算法

介绍 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h>#define ElemType PCB #define Status int #define true 1 #define false 0 #define OK 1 #define ERROR 0 #define RESOURCE_NUM …

js知识点汇总

1.本门课的作用&#xff08;JavaScript的作用&#xff09;所有基于Web的程序开发基础 2.一种计算机客户端脚本语言&#xff0c;主要在Web浏览器解释执行。 3.浏览器中Javascript&#xff0c;用于与用户交互&#xff0c;以及实现页面中各种动态特效 4.在HTML文件中&#xff0…

关于Java中String的问题

String 对象的两种创建方式&#xff1a; String str1 "abcd";//先检查字符串常量池中有没有"abcd"&#xff0c;如果字符串常量池中没有&#xff0c;则创建一个&#xff0c;然后 str1 指向字符串常量池中的对象&#xff0c;如果有&#xff0c;则直接将 st…

如何判断对象已经死亡

引用计数 给对象中添加一个引用计数器&#xff0c;每当有一个地方引用它&#xff0c;计数器就加 1&#xff1b;当引用失效&#xff0c;计数器就减 1&#xff1b;任何时候计数器为 0 的对象就是不可能再被使用的。 这个方法实现简单&#xff0c;效率高&#xff0c;但是目前主流…

算法(2)-二叉树的遍历(递归/迭代)python实现

二叉树的遍历1.深度优先DFS1.1 DFS 递归解法1.1.1先序遍历1.1.2中序遍历1.1.3后序遍历1.2 DFS迭代解法1.2.1先序遍历1.2.2中序遍历1.2.3后序遍历2.广度优先BFS3.二叉树的最大深度3.1递归3.2迭代4.翻转二叉树4.1递归4.1迭代5.合并两棵二叉树5.1递归5.2迭代有两种通用的遍历树的策…

利用posix_fadvise清理系统中的文件缓存

利用posix_fadvise清理系统中的文件缓存leoncom c/c,unix2011-08-03当我们需要对某段读写文件并进行处理的程序进行性能测试时&#xff0c;文件会被系统cache住从而影响I/O的效率&#xff0c;必须清理cache中的对应文件的才能正确的进行性能测试。通常清理内存可以采用下面的这…

空间分配

目前主流的垃圾收集器都会采用分代回收算法&#xff0c;因此需要将堆内存分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 大多数情况下&#xff0c;对象在新生代中 eden 区分配。当 eden 区没有足够空间进行分配时&#xff0c;虚拟…

创建与打开IPC通道的POSIX和SYSTEM V方法

先说&#xff30;&#xff2f;&#xff33;&#xff29;&#xff38;的吧&#xff1a; mq_open&#xff0c;sem_open&#xff0c;shm_open着三个函数用于创建或者打开一个IPC通道。 由此可见&#xff0c;消息队列的读写权限是任意的&#xff0c;然而信号灯就没有&#xff0c;…