python中的模块和包

模块和包


一个模块就是一个包含python代码的文件。一个文件就是一个模块

为什么要使用模块


1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护与管理
2.模块可以增加代码的重用率
3.模块可以当作命名空间

如何定义自己的模块


模块本身就是一个文件,所有py代码都可以在文件中直接书写。不过我们开发共用模块时,最好在模块中书写以下内容。

变量         模块中的属性值
函数         单独的功能
类           相似功能组合
模块测试代码   临时使用,被导入时不会执行

测试代码:

测试代码经常在开发模块时用于测试模块的功能,但是测试代码仅在开发和测试时使用,被当作模块导入时不希望测试代码运行。需要使用name特殊变量来操作。

if __name__  == '__main__':#测试代码区域(仅在吧当前文件直接运行时才会执行测试代码,当作模块导入时则不会执行)

name 在直接运行当前文件时,结果为main

name 被当作模块导入文件时,结果为 模块名称

模块的导入方式


import 模块名

作用:直接导入模块
使用方法:模块名.变量名模块名.函数名模块名.类名.方法名()模块名.类名.属性名

import 模块 as 别名

作用:直接导入模块,并且为模块起一个别名
使用方法:别名.变量名别名.函数名别名.类名.方法名()别名.类名.属性名

from 模块 import 某个函数或者类

作用:直接导入模块中的某个方法或者某个类或变量
使用方法:函数名()变量名类名.方法名()属性名

from 模块 import 函数,函数,类,类...

作用:直接导入模块中的多个方法和多个类和变量
使用方法:函数名()变量名类名.方法名()属性名

from 模块 import *

作用:直接导入模块中的所有方法和类和变量
使用方法:函数名()变量名类名.方法名()属性名

注意事项:如果采用from 导入的方式要确保模块中的函数变量等内容不能与系统的内置函数同名,否则会出现异常。

模块的存放


如果不想自己新建自定义的模块文件夹,可以将我们自定义的模块存放到 python 目录中的\Lib\site-packages中。

搜索路径就是python在加载模块时候的查找路径

1.获取当前模块的搜索路径

import sys

sys.path 获取当前搜索路径的列表

2.将自定义的路径添加到列表中

sys.path.append(自定义路径)

模块的加载顺序


导入模块操作的步骤:

1.检测内存中是否已经加载过当前模块,如果加载过,直接使用加载的模块
2.如果内存中没有加载当前模块,则搜索python的内置模块
3.如果当前内置模块中中没有该模块,根据搜索路径查找并且加载模块


包就是文件夹,他用于存放文件也就是模块。包中也可以存放包

包的结构


包
|---- __init__.py 包的标志文件
|---- 模块1
|---- 模块2
|---- 子包(文件夹)
|-----|----__init__.py
|---- |----子模块1
|---- |----子模块2

包的导入和使用


import 包.模块

使用方法:包.模块.变量名包.模块.函数名()包.模块.类名.属性名包.模块.类名.方法名()

import 包.模块 as 别名

使用方法:别名.变量名别名.函数名()别名.类名.属性名别名.类名.方法名()

from 包.模块 import 函数或者类或者属性

使用方法:变量名函数名()类名.属性名类名.方法名()

from 包.模块 import *

使用方法:变量名函数名()类名.属性名类名.方法名()

在__init__.py文件中添加内容(当模块用)


在此情况下可以将包当作模块直接导入使用

import 包

使用:包.变量名包.函数名()包.类名.属性名包.类名.方法名()

import 包 as 别名

使用:别名.变量名别名.函数名()别名.类名.属性名别名.类名.方法名()

from 包 import 函数,类,变量

使用:变量名函数名()类名.属性名类名.方法名()

from 包 import *

使用:变量名函数名()类名.属性名类名.方法名()

包和模块的互相调用问题

如果在当前模块中需要调用其他模块或者包的内容时,可以直接使用import 导入对应的包和模块,就可以加载进来使用,import 会搜索包和模块对应的搜索路径(sys.path)

import  模块或者包

__all__特殊变量的用法

  • 在__init__.py文件中,如果没有__all__变量,那么使用from 包 import * 仅导入__init__.py中定义的方法和类及其他内容

  • init.py文件中,如果定义all变量,那么使用from 包 import * 则会导入all指定的所有模块,而忽略init.py文件中的信息

__all__ = ['模块','模块','子包'。。。]   #必须是列表

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

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

相关文章

2005年全球H.264编解码器荟萃

2005年全球H.264编解码器荟萃videosky.9126.com Peter Lee 2005-0920【摘要】H.264/AVC作为最新的视频编码标准,研究领域和产业界都非常看好该标准。尤其是产业界,针对H.264的软硬件编解码器可谓是百花齐放、百家争鸣。本文中,笔者对2005年全…

【Tensorflow】基于卷积神经网络实现车牌的识别

引言: 过去几周我一直在涉足深度学习领域,尤其是卷积神经网络模型。最近,谷歌围绕街景多位数字识别技术发布了一篇不错的paper。该文章描述了一个用于提取街景门牌号的单个端到端神经网络系统。然后,作者阐述了基于同样的网络结构…

脚本启动显示查询频繁被服务器防御_面对CC攻击,该如何进行防御

网站被攻击是一件十分让人恼火的事情,不仅仅是让网站速度变慢、访问异常,导致用户体验变差,用户大量流失,而且还会导致网站关键词排名下降甚至被降权,极大干扰了网站的正常稳定运行。那面对CC攻击,该如何进…

面对SDN/NFV部署挑战 网络厂商能做什么?

近年来,随着云计算的不断发展,网络虚拟化受到广泛关注,而作为网络虚拟化的实现方式,SDN自诞生之日起就担负着网络变革的使命。那么,SDN技术的驱动力是什么?SDN在引入现网的过程中,如何实现平滑无…

python中的tkinter模块

tkinter介绍 tkinter是python自带的GUI库,是对图形库TK的封装 tkinter是一个跨平台的GUI库,开发的程序可以在win,linux或者mac下运行 除此之外还存在很多图形库,例如 pythonWin 仅适合window的界面编程库 wxPython 第三方界面编…

PAT甲题题解-1011. World Cup Betting (20)-误导人的水题。。。

题目不严谨啊啊啊啊式子算出来结果是37.975样例输出的是37.98我以为是四舍五入的啊啊啊&#xff0c;所以最后输出的是sum0.005结果告诉我全部错误啊结果直接保留两位小数就可以了啊啊啊啊 水题也不要这么坑人啊啊啊啊 #include <iostream> #include <algorithm> #i…

【Django】文件上传以及celery的使用

上传文件、异步、初始化脚本 面试题&#xff1a; 项目中的静态文件处理&#xff08;JS/CSS/image&#xff09; 自己在机房内优化的方法&#xff1a;1. Nginx/lighttpd(lighty-douban)&#xff1a;Nginx 处理静态资源速度非常快&#xff0c;并且自身还带有缓存。2. 80: Nginx -&…

Android 查看每个应用的最大可用内存

http://blog.csdn.net/vshuang/article/details/39647167 Android 内存管理 &Memory Leak & OOM 分析 单个应用可用的最大内存 Android设备出厂以后&#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了&#xff0c;超出这个值就会OOM。这个属性值是定义在…

分析一段H264视频数据

分析一段H264视频数据 Posted on 2007-05-31 09:42 vcommon 阅读(1968) 评论(8) 编辑 收藏 引用 分析 00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的数据流分为两种&#xff0c;一种是NAL UNIT stream(RTP),一种是 bits stream, 两者可以互相转换。我们分析的这个…

SVN在vs2013中使用

http://download.csdn.net/download/show_594/9112963 内包含VisualSVN 5.0.1的官方原版安装包及破解文件VisualSVN.Core.L.dll. 使用方法&#xff1a; 1、运行&#xff1a;VisualSVN-5.0.1.msi 进行原版的安装。 2、打开VisualSVN的安装路径。进入其子目录bin。将压缩包内的Vi…

springboot springmvc mybatis_12道重点的Spring Boot面试题,帮你整理好了!

今天跟大家分享下SpringBoot常见面试题的知识。最新2020整理收集的一些面试题&#xff08;都整理成文档&#xff09;&#xff0c;有很多干货&#xff0c;包含mysql&#xff0c;netty&#xff0c;spring&#xff0c;线程&#xff0c;spring cloud等详细讲解&#xff0c;也有详细…

【数据分析】快速获取微博用户数据,图片,视频

功能输出实例运行环境使用说明 下载脚本安装依赖程序设置设置数据库&#xff08;可选&#xff09;运行脚本按需求修改脚本&#xff08;可选&#xff09; 如何获取user_id添加cookie与不添加cookie的区别&#xff08;可选&#xff09;如何获取cookie&#xff08;可选&#xff09…

“云计算”越来越重要 但更重要的是“云安全”

据Gartner公司的预测&#xff0c;云安全服务业务继续保持强劲&#xff0c;2017年最终将达到59亿美元的规模&#xff0c;比2016年上涨了21&#xff05;。 云安全服务市场的增长速度将超过整体信息安全市场。Gartner表示&#xff0c;电子邮件的安全性&#xff0c;网络安全和身份识…

HTML中Head头

HTML中Head头 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网页标题</title> </head> <body>网页显示内容 </body> </html>HEAD标签里面负责对网页进行一些设置以及…

H.264的两个概念:DC系数和AC系数。 MV预测过程详解(附图)

在做熵编码之前&#xff0c;先明确两个概念&#xff1a;DC系数和AC系数。 量化后得到的仍是64个系数&#xff0c;量化并没有改变系数的性质。大家知到DCT变换是将数据域从时&#xff08;空&#xff09;域变换到频域&#xff0c;在频域平面上变换系数是二维频域变量u和v的函数。…

1028. List Sorting (25)

题目链接&#xff1a;http://www.patest.cn/contests/pat-a-practise/1028 题目&#xff1a; 1028. List Sorting (25) 时间限制200 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueExcel can sort records according to any column. Now you are suppose…

【后端开发】分析抖音后台架构

最后分享抖音美女爬虫 https://github.com/wangshub/Douyin-Bot

看日本如何用IoT打造智能工厂

在技术、市场、政策等方面因素的推动下&#xff0c;全球正在掀起一股智能制造的热潮&#xff0c;越来越多的国家大力推进智能工厂的建设。有机构预测&#xff0c;未来五年智能工厂领域的投资将促进生产力增长27%&#xff0c;预计到2022年年底&#xff0c;21%的工厂将会成为智能…

HTML标题

HTML标题 通过 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>,标签可以在网页上定义6种级别的标题。 6种级别的标题表示文档的6级目录层级关系&#xff0c;比如说&#xff1a; <h1>用作主标题&#xff08;最重要的&#xff09;&#xff0c;其…

264中 POC的计算方法

作者&#xff1a;jogh.264 参考代码 JM86 一参数说明 这一节阐述的是encoder.cfg 中的参数对编码过程的影响 要注意的是encoder.cfg 中的参数跟input 结构体中的变量是一一对应的 ? StartFrame&#xff1a;从视频流的第几帧开始编码 ? FramesToBeEncoded&#xff1a;指明…