python中自带的模块_python中的模块详解

概念

python中的模块是什么?简而言之,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块可以被项目中的其他模块、一些脚本甚至是交互式的解析器所使用,它可以被其他程序引用,从而使用该模块里的函数等功能,使用Python中的标准库也是采用这种方法。

分类

在Python中模块分为以下几种:

系统内置模块,例如:sys、time、json模块等等;自定义模块,自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。注意:自定义模块的命名一定不能和系统内置的模块重名了,否则将不能再导入系统的内置模块了。例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

使用模块

我们先来看一个例子,导入系统内置的sys模块:

在第二行处,写了这样一句话:“import sys”,表示使用系统自带的sys模块,因此,在下面的代码里,就可以使用sys模块里的函数:“sys.argv”,它的作用是返回命令行的参数列表。

使用关键词“import”,后面跟具体的模块名称,则可以导入某一个模块;同一个模块不管你执行了多少次“import”,只会被导入一次,以防止模块一遍又一遍的被执行;“import”应该被放在代码的顶端;

接下来我们导入一个自定义的模块,首先我们定义一个模块,并且把这个模块的名字叫做“myprint.py”,如下图所示:

这个模块里定义了一个函数,打印输入的参数,并且在后面再加上一行自定义打印的文字。将这个文件保存,接下来让我们看调用方法:

在调用的地方,同样只需要输入“import myprint”,然后就可以在任意地方调用了,调用的方法也是一样,用该模块的名字.函数名称(参数)就能达到调用目的。

from...import

刚才我们提到了引入一个模块使用“import”关键词,它将把这个模块整个引入进来,那么,from...import则是引入一个指定部分到当前的命名空间中来,例如我们有如下图所示的一个模块:

上面的模块定义了两个函数,分别是“print_myself”和“print_other”,现在我们用from...import使用这个模块,并且只想使用第一个函数,如下图:

从上面的两个例子,我们可以看到,“import”和“from...import”的作用都是引入一个模块,它们的区别在于:

“import”是引入一个完整的模块,“from...import”是引入模块中的一个或多个指定部分;“import”引入模块后,如果需要使用模块里的函数方法,则需要加上模块的限定名字,“from...import”则不用加模块的限定名字,直接使用其函数方法;值得一提的是,还有一种引入模块的方法:“from...import*”,举例如下图:

请看,刚才运行时会出错的地方“print_other”不会出错了!但是,绝大多数编程人员不会这么写,因为它一次性的把一个模块里的所有函数、变量都一次性的引入进来了(单下划线“_”开头的名字不在此列),有可能会覆盖现有代码的定义;

小结

Python中模块化的好处多多,总结起来,有如下优点:

提高了代码的可维护性;一个模块编写完毕之后,其他模块直接调用,不用再从零开始写代码了,节约了工作时间;避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是,切记,不要和系统内置的模块名称重复;

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

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

相关文章

剑指 Offer 51-----59

剑指 Offer 55 - I. 二叉树的深度 解题思路: class Solution { public:int maxDepth(TreeNode* root) {if(rootNULL)return 0;int lmaxDepth(root->left);int rmaxDepth(root->right);return (l>r?l:r)1;} };

jbpm 和 drools_jBPM和Drools工作台中的用户和组管理

jbpm 和 drools介绍 本文讨论了一项新功能,该功能允许使用集成在jBPM和Drools Workbenches中的直观友好的用户界面来管理应用程序的用户和组。 用户和组管理 在安装,设置和使用此功能之前,本文讨论了一些以前的概念,需要进一步理…

剑指 Offer 01-----20

剑指 Offer 03. 数组中重复的数字 解题思路,使用STL中的set,逐个读入vector中的每一个元素,使用set进行对比,如果set中存在会返回1,这时直接返回该元素即可;如果set中没有可以insert这个元素到set&#xf…

python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-9-23Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""def main():# 过滤器# 通过 过滤…

从事java编程技能要求_5道Java视频课程,提高您的编程技能

从事java编程技能要求作为Web开发人员,跟上技术知识可能会很棘手。 新技术似乎每天都在弹出,而基本技术也看到了重复迭代的浪潮,增加了新的功能。 Java开发人员应该做什么? 这是在线教育平台发挥作用的地方。 它们可以帮助您快速…

常见算法核心思想

双指针算法 1.双指针算法主要是为了提高朴素算法的复杂度&#xff0c;即O(n^2)的算法&#xff0c;优化为O(n)的算法。 2.常见模板 for (int i 0, j 0; i < n; i ) {while (j < i && check(i, j)) j ;// 具体问题的逻辑 } 常见问题分类&#xff1a;(1) 对于…

sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;*声明&#xff1a;《缺陷周话》栏目系列文章由奇安信代码卫士团队原创出品。未经许可&#xff0c;禁止转载。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。代码审计是使用静态分析发现源代码中安全缺陷的方法&…

idea添加jboss_如何将云持久存储添加到JBoss Cool Store

idea添加jboss我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 上个月&#xff0c;我们带来了一个完整的零售示例&#xff0c;其中的JBoss Cool Store运行在您的堆栈的OpenShift Enterprise层上&…

【技术解决方案】优化FFmpeg探测网络流时间过长的问题

场景要求 项目要求点播速度是300到500毫秒之间&#xff0c;现在最长的点播延时是1300毫秒&#xff08;有的时候甚至无法播放视频&#xff09;&#xff0c;生产环境是RTSP传输H264裸流数据&#xff0c;研究在接收到I帧的时候&#xff0c;开始出来图像&#xff0c;简化FFmpeg的调…

python画各种统计图的特点_Python 分词并画出词频统计图 | 睿鑫网络

import turtle##全局变量###词频排列显示个数count 10#单词频率数组-作为y轴数据data []#单词数组-作为x轴数据words []#y轴显示放大倍数-可以根据词频数量进行调节yScale 2#x轴显示放大倍数-可以根据count数量进行调节xScale 30################# Turtle Start #########…

ssm影城项目_影场与属性访问器界面

ssm影城项目卡尔迪亚&#xff08;Carl Dea&#xff09;最近跟踪了我的一篇名为“ 保存内存”的博客文章&#xff01; 为属性使用阴影字段 。 在他的博客中&#xff0c;他建议使用称为“属性访问器”的接口来消除大量使用样板代码所需的样板代码。 卡尔还提到他尚未用大量数据测…

【技术解决方案】优化FFmpeg编码器参数设置

FFmpeg x264编码参数对照表 x264 ffmpeg 说明 命令行 字段 命令行 字段 qp qp_constant cqp cqp 固定量化因子。取值范围0到51。 经常取值在20-40之间&#xff0c;越小质量 越好,要求的码率越高。0表示无损压缩 max-keyint i_keyint_max g gop_size …

python version翻译_python实现在线翻译功能

对于需要大量翻译的数据&#xff0c;人工翻译太慢&#xff0c;此时需要使用软件进行批量翻译。1.使用360的翻译def fanyi_word_cn(string):url"https://fanyi.so.com/index/search"#db_path ./db/tasks.dbForm_Data {}#这里输入要翻译的英文Form_Data[query] string…

java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

java流写入数据库快速流媒体 当Java 8最终问世时&#xff0c;我和一些大学开始了一个开源项目&#xff0c;以利用Java 8的流库使整个Java / DB问题更进一步&#xff0c;以便将数据库表视为纯Java 8流。 速度诞生了&#xff01; 哇&#xff0c;现在我们可以做类型安全的数据库应…

【技术解决方案】RTP_UDP传输过程中数据丢失的解决方案

1. 从发送端解决(推荐) 适用条件: ①发送端是可以控制的.②微秒数量级的延迟可以接受 解决方法:发送时使用usleep(1)延迟1微秒发送,即发送频率不要过快,延迟1微妙发送,可以很好的解决这个问题.。 2.从接收端解决方法一 适用条件:①无法控制发送端发送数据的频率 解决方法:…

方法参数泛型_无参数泛型方法反模式

方法参数泛型最近&#xff0c;有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上。 请考虑以下方法&#xff1a; <X extends CharSequence> X getCharSequence() {return (X) "hello"; }尽管这种不安全的转换看起来有些古怪&#xff0c;并且您…

python文件读取写入实践_python文件写入实例分析

本文实例讲述了python文件写入的用法。分享给大家供大家参考。具体分析如下&#xff1a;Python中wirte()方法把字符串写入文件&#xff0c;writelines()方法可以把列表中存储的内容写入文件。ffile("hello.txt","w")li["hello world\n","he…

【H.264/AVC视频编解码技术】序章【编码的前世今生】

视频格式 关于视频格式的内容,在这里不进行赘述,详细学习可以参考视频格式 视频数据冗余 数据冗余的类型分为哪几种? 图像与视频在数字化过程,即模电转数电过程中会产生数据冗余。从数字信号的统计特征方面,一般将这些数据冗余分为空间冗余,时间冗余,信息熵冗余三大…

小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题

摄像头仅仅是视频监控系统的一部分&#xff0c;即使摄像头完好无损&#xff0c;监控画面也可能会出现不显示、卡顿、丢失等情况。想要彻底解决网络监控的问题&#xff0c;往往需要排查各个连接设备才可以判断。下面我们就总结了10个问题&#xff0c;彻底解决网络监控的问题。一…

java对话_您应该保持联系的十大高级Java对话

java对话在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验&#xff0c;而不必坐下来。 在下面的文章中&#xff0c;我们收集了10位我们最喜欢的演讲者和主题&#xff0c;我们相信每个Java开发人员都应该注意。 获取爆米花&#xff0…