zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼python(48)--巩固篇—模块

    模块

    其实前面都说过的,不过还是系统的再说一次,相信学到这,大部分都被搞忘了吧,所以再提一下,也为后面的博文做铺垫

    1.什么是模块

    在程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护,不断的滚雪球式的增长。为了维护好代码,我们把很多类和函数分组,分别放到不同的python可读的py文件里,这样就解决了问题,让主程序文件的代码减少,很多编程语言都采用这种组织代码的方式,在html标签里也一样,把样式写入css里,要用的使用再链接css样式表就行。而这里的一个.py文件就称之为一个模块(Module)

    模块也有另一个名称,库,库又分标准库和第三方库,而内置的库(在安装python时就已经带有的库)或者说模块就是标准库,而需要使用pip命令安装的库就叫第三方库。

    2.有哪些模块

    因为python是开源的,pypi等各大社区里也有很多能人志士不断的开发整合各色各样的库(模块)。

    1)而内置的库怎么查看呢?

    我们知道查看内置方法是用dir(__builtins__),查看库又是什么呢?借助sys模块

    (只截取了部分)

    sys.modules方法就可以查看所有的内置库,会列出详细的库名和库的路径,当然如果你只想看库名,可以使用命令sys.modules.keys()

    (只截取了部分呢)

    也可以使用help()函数查看:

    • help()
    • modules

    (只截取了部分)

    上面有方法是查看所有已存在的模块的,自己去研究了

     2)查看第三方模块,在终端界面,使用pip list或者pip freeze查看

    注意:使用pip list时出现的红色字段只是一个警告,意思是说以后pip list的默认格式会采用columns,不用在意,都能正常使用的,如果你实在看不惯可以有方法解决,详细的自己百度吧

     

    3.怎么使用模块

    使用命令导入:

    import  XX

    例:

     

    from  XX import XX

    例:

     

     

    当导入模块下的方法名和其他模块的方法名重复,可以使用as取个别名。

    比如math模块里的sqrt和cmath模块里的sqrt方法,例:

     

    也可以使用from XX import * 导入模块里的所有函数,但此法只能导入XX的类里__init__下的方法,如果是隐藏方法的话使用命令from XX import *则不能被导入

    4.命名空间

    什么是命名空间,比如上面的命令from math import sqrt 中的math就是命名空间,每个空间相互独立,互不影响,所以才会存在不同模块有相同方法名

    5.模块的作用:

    最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

    使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

    6.__name__= ”__main__”

    我们在很多时候都会使用这段代码,其实这个我前面也说过的。

    • __name__指当前的主程序
    • __main__指模块

    主程序:指当前模块的主体程序,并不是__name__。无论当前模块是被别的模块导入还是作为脚本直接运行,都会执行这部分代码

    __name__,指模块应该如何被加载,如果模块是被另一个py文件导入,__name__的值就是py文件名。如果模块是直接执行,__name__的值就是自身,即__main__,本模块或者叫主体程序

    注意:

    所有的模块都有能力执行代码,只是会不会返回结果而已。建议做法是,除了真正需要导入模块才能执行的功能外,一般功能尽量自定义函数解决;

    __name__==’__main可以用来做模块测试

    转载于:https://www.cnblogs.com/yangva/p/7751363.html

  • 相关阅读:
    测试发帖
    C# 四舍五入算法(转)
    赚钱,爱好,生活
    c# 当前dll目录
    BlogWriter
    调用com+时,提示 0x800706f7,error msg:占位程序接收到错误数据,(本地调用时提示:不支持此接口)
    测试2
    系统架构设计 & 避免循环引用(转载)
    Visual Studio 2008查找替换用的正则
    Myeclipse webinf/lib包加载问题
  • 原文地址:https://www.cnblogs.com/twodog/p/12139087.html
Copyright © 2011-2022 走看看