python 浅析模块

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

    首先说一下对模块的理解,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样每个文件包含的代码就相对较少,很多编程的语言就采用这种组织代码的方式。在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:这些东西还参考了其他博主的文献,在这里表示感谢)

 

 

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值