• (9)什么是模块和包


    什么是模块

    计算机开发过程中,随着程序代码越写越多,在一个文件夹里代码就会越来越长,越来越不容易维护

    为了编写可维护的代码,把函数分数,分别放到不同的文件里,这样,每个文件包含的代码就相对减少,在Python中一个.py文件就是一个模块

    模块分为三种

    1、内置标准模块

    2、第三方开源模块

    3、自定义模块

    调用模块的方式

    1、import module_name(module_name就是模块名)

    PS:import 模块的时候必须先要用sys模块下的path方法定义好模块的调取路径,否则无法调取

    2、from module import xx (modulie=文件夹名称)

    PS:这样倒入比较方便,不用做调用路径设置,缺点就是如果调用的模块名和代码中的函数名相同,则容易被覆盖

    3、from spam import read1 as read(从文件夹倒入模块并调用模块下的方法并重新命名)

    PS:如果遇到自定意义模块下的函数名和代码下的函数名相同,或者调用的模块下的方法名字过长,那么在调用的时候可以自己重命名

    4、from spam import read1,read2,money(连续调用一个模块下的多个函数)

    5、from spam import *  (调取指定文件夹下的所有模块)

    调用的时候区分模块和文件

    编写好的一个python文件可以有两种用途

    一:脚本,一个文件就是整个程序,用来被执行

    二:模块,文件中存放着一堆功能,用来被导入使用

    python为我们内置了全局变量__name__

    当文件被当做脚本执行时:__name__ 等于'__main__'

    当文件被当做模块导入时:__name__等于模块名

    PS:写好的代码最后加上这个 if __name__ == '__main__'语句,然后将文件调用的指令放入这个语句后面,则在倒入调用的时候不会执行,而直接执行这个文件的时候才会执行代码下的执行命令

    什么是包

    包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来

    需要强调的

    1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错

    2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块

    包的本质就是一个文件夹

    那么文件夹唯一的功能就是将文件组织起来 随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

    关于包相关的导入语句也分为import和from ... import ...两种

    但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:

    凡是在导入时带点的,点的左边都必须是一个包,否则非法

    可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。

    但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)

    import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

    包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

  • 相关阅读:
    20155330 2016-2017-2《Java程序设计》课程总结
    20155330 实验五 网络编程与安全 实验报告
    20155330 实验四 Android程序设计
    20155330 课堂测试 20170517
    20155330 实验三 敏捷开发与XP实践
    20155330 第十一周课堂练习(20170503)
    20155330 2016-2017-2 《Java程序设计》第十周学习总结
    20155330 2016-2017-2 《Java程序设计》第九周学习总结
    2017-2018-1 20155329 《信息安全系统设计基础》第13周学习总结
    2017-2018-1 20155329 实验五 通讯协议设计
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10082769.html
Copyright © 2020-2023  润新知