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,一经查实,立即删除!

相关文章

Wow6432Node

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然。 64 位版本 Windows 包含的默认 64 位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的 注册表项。WOW64 注册表重定向器为 32 位程序提供…

如何使用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判断后&…

MachineLearning(4)-核函数与再生核希尔伯特空间

核函数与再生核希尔伯特空间1.支持向量积-核函数2.一个函数为核函数的条件3.核函数与希尔伯特空间3.1希尔伯特空间-Hilbert空间1.支持向量积-核函数 核(kernel)的概念由Aizenman et al.于1964年引入模式识别领域,原文介绍的是势函数的方法。在那之后,核…

CRegKey 注册表操作

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

进程基础

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

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

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

C资源

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

学点数学(2)-特征函数

特征函数1.数列特征方程2.矩阵特征方程3.微分方程特征方程4.积分方程特征方程特征方程是为研究相应的数学对象而引入的一些等式,这些等式描述了特定对象的特性。依据研究的对象不同,特征方程包括数列特征方程、矩阵特征方程、微分方程特征方程、积分方程…

GCC如何产生core dump

先决条件1.安装apport(automatically generate crash reports for debugging)2.修改/etc/security/limits.conf文件,使允许core dump,或者用ulimit -c unlimited设置core dump文件的大小为unlimited3.C/C的编译开关-g(…

经典的进程同步问题

经典的进程同步问题 普通版:一类进程作为生产者,生产产品,生产的产品放入一个缓冲区,消费者从缓冲区中取出产品,需要保证生产者不可以向满的缓冲区中添加产品,消费者不可以从空的缓冲区中取出产品。同一时刻…

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

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

Linux-2.6.25 TCPIP函数调用大致流程

Linux-2.6.25 TCPIP函数调用大致流程学习目的,随手笔记。函数和文字说明会不断补充更新。Changelog2008.10.08 最近找工作忙。暂时缓缓插口层系统调用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

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&#…

日志级别 debug info warn eirror fatal

日志级别 debug info warn eirror fatal 软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志&#xff0c;不管用什么&#xff0c;这些东东大多是大同小异的&#xff0c;一般都提供了这样5个日志级别&#xff1a; Debug Info Warn Error Fatal一个等级比一个高&…

输入输出系统

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

vue2源码解析---v-model双向数据绑定

什么是v-model v-model 是 Vue 中的一个指令&#xff0c;用于实现表单元素与 Vue 实例中数据的双向绑定。这意味着当表单元素的值发生变化时&#xff0c;Vue 实例中的数据也会随之更新 工作原理 生成ast树 本质上是语法糖 结合了v-bind和v-on两个指令 示例代码 new Vue({e…