今天买了一本关于模块的书,说实话,模块真的太多了,小编许多也不知道,要是把模块全讲完,可能得出本书了,所以小编在自己有限的能力范围内在这里浅析一下自己的见解,同时讲讲几个常用的模块。

首先说一下对模块的理解,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样每个文件包含的代码就相对较少,很多编程的语言就采用这种组织代码的方式。在Python中,一个  .py文件就称为一个模块(Moudle)。

再来说一下模块的好处,最大的好处就是提高了代码的可维护性。其次,编写代码也不用从零开始。当一个代码写完后,就可以被其他地方引用。我们编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。而且使用模块还可以避免函数名和变量名冲突。但是也要注意,尽量不要与内置函数名称冲突。

下面介绍一下如何导入模块:

在Python 中用关键字import来导入某个模块:

import  modname

比如要导入模块numpy,就可以在文件最开始的地方用import numpy 来引入。在调用numpy模块的函数时,必须这样引入:

模块名.函数名(比如:import numpy        numpy.arange(5))

与第一种方法的区别是:funcname被直接导入到本地名字空间取了,所以他可以直接使用,而不需要加上模块名的限定 * 表示,该模块的所有公共对象(public objects)都被导入到当前的名称空间,也就是任何只要不是以    "_"   开始的东西都会被导入。

为什么必须加上模块名这样调用呢?因为可能存在这样一种情况,在多个模块下含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用那个函数,所以如果像上述这种情况引入模块的时候,调用函数必须加上模块名。

有时候我们只需要引入模块中的某个函数,只需要引入该函数即可,此时通过下面语句实现:

form modname   import    funcname

(form  modname  import    fa,fb,fc

form modname  import  *      但是这个得谨慎使用         )

当然可以通过通过这种方法不仅可以引入函数,还可以引入常量,通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。所以有以下建议:

1) 如果你经常访问模块的属性和方法,且不想一遍又一遍的敲入模块名称,使用  form  module import

2) 如果你想要有选择性地导入某些属性和方法,而不想要其他的,使用  form  module import

3)如果模块包含的属性和方法与你的某个模块同名,你必须使用  import module 来避免名字冲突

4)尽量少使用   form  module import  *,因为判定一个特殊的函数或属性是从哪里来的有些困难,并且会造成调试和重构都更困难。

还有一种导入模块的方法就是内建函数 _import_ ()

除了前两种使用 import 导入的方法以外,我们还可以使用内建函数来导入 module。两者的区别是: import 后面必须跟的是一个类型(type),而 _import_()的参数是一个字符串,这个字符串可能来自配置文件,也可能是某个表达式计算结果。例如:

mymodule =  _import_ ( 'module_name ' )

一般情况应该使用import , 但有几个例外 
      1)module文档告诉你要用from-import的 
      2)导入一个包组件。需要一个包里面的某个子模块,一般用from A.b import c比import A.b.c 更方便 且不会冒混淆的危险.

你也许会想到,如果不同的人编写的模块名称相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)

包的引入解决了模块名冲突,就是只要顶层的包名字不与别人冲突,那么模块都不会与别人冲突。

注意:每个包目录下都会有一个  _init_.py  的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。 _init_.py 可以是空文件,也可以是有Python代码,因为  _init_.py  本身就是一个模块,而它的模块名就是   mycompany

以上是我对模块的简单理解,而对模块的使用,后面会加上,谢谢体谅(Ps:这些东西还参考了其他博主的文献,在这里表示感谢)

python 浅析模块的更多相关文章

  1. python 浅析模块,包及其相关用法

    今天买了一本关于模块的书,说实话,模块真的太多了,小编许多也不知道,要是把模块全讲完,可能得出本书了,所以小编在自己有限的能力范围内在这里浅析一下自己的见解,同时讲讲几个常用的模块. 这里是2018. ...

  2. python浅析模块,包及其相关用法

    一,模块 什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里面,代码会越来越长,越来越不容易维护. 为了编写可以维护的代码,我们把很多函数分组,分别放到不同额文件,这样,每个文 ...

  3. 用Python浅析股票数据

    用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...

  4. python select模块

    Python select 一.前言 Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句 ...

  5. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  6. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  7. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  8. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  9. python基础-模块

    一.模块介绍                                                                                              ...

随机推荐

  1. Java重定向和转发的路径问题

      路径问题:         ①相对路径和绝对路径:             绝对路径:  绝对路径是以/开头的路径!             相对于当前服务器的绝对路径: 如果是服务器解析,那么/ ...

  2. android炫酷动画源码,QQ菜单、瀑布流、二维码源码

    Android精选源码 自定义弹框封装,ProgressDialog,StatusDialog和Toast,支持自定义颜色 有深度感的fragment代码 在屏幕顶部或者底部显示提示 短信转发工具,自 ...

  3. let 和 var定义变量的区别-盼盼Degenerate

    let和var关键字的区别 声明后未赋值,表现相同 (function() { var varTest; let letTest; console.log(varTest); //输出undefine ...

  4. 【Tomcat】Invalid character found in the request target

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC ...

  5. C语言指针(二)指向指针的指针

    注意:指向指针的指针适合于做链表 1.声明方式:在变量名前放置两个*符号 int**var; 2.实例: #include<stdio.h>int main (){intvar;int*p ...

  6. Python3使用Print输出带颜色字体

    Phton3使用print输出带颜色的彩色字体 实现过程:       终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.       转义序列是以ESC开头,即用\03 ...

  7. 如何生成转储(dmp)文件--工具篇

    转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的方法. 1. 任务管理器 任务 ...

  8. Jmeter常用功能详解

    嘻嘻,忙碌的一周,马上就到周四了~明天就是周五了,可以去嗨了! 这几天正式成立了一个微信订阅号,旨在免费帮助需要入门软件测试的小白! 各位走过路过的亲,欢迎订阅哦:扫描二维码即可订阅

  9. 迈向angularjs2系列(3):组件详解

    一: 以组件开发一个to-do list应用 todo组件分为导入.接口定义.顶层组件.控制器.启动5个部分. app.ts: //导入 import {Component} from '@angul ...

  10. java IO输入输出流实现文本复制