zoukankan      html  css  js  c++  java
  • 模块01

    模块

      模块就是一系列功能的集合体

      模块的三种来源

      1 内置模块

      2 第三方模块

      3 自定义模块

      模块的格式

      1 使用python编写的.py文件

      2 已经编译为共享库或DLL的C或C++扩展

      3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹别称之为包)

      4 使用C编写并链接到python解释器的内置模块

      为什么用模块

      1 使用内置的或第三方的模块的好处是:拿来主义,可以极大提升开发效率

      2 使用自定义模块的好处是:可以减少代码冗余

      使用模块

        大前提:一定要区分开谁是执行文件,谁是被导入模块

      import

       文件名是xxx.py  模块名是xxx

      首次导入模块

      会产生一个模块的名称空间

      执行文件xxx.py,将执行过程中产生的名字都放到模块的名称空间中

      在当前执行文件的名称空间中拿到一个模块名,该名字指向模块的名称空间

      多次导入都是直接引用第一次导入的成果,不会重新执行文件

      执行文件中访问模块名称空间名字的语法:模块名.名字

      指名道姓的要名字不会和当前执行文件的名字冲突

      总结

      优点:指名道姓的向一个名称空间要名字,肯定不会与当前名称空间中的名字冲突

      缺点:但凡应用模块中的名字都需要加前缀,不够简洁

      一行导入多个

      可以为模块起别名

     

      from ... import

      首次导入模块

      创建一个模块的名称空间

      执行文件,将执行过程中产生的名字都放到模块的名称空间中

      在当前执行文件中直接拿到一个名字,该名字就是执行模块中相对应的名字

      总结

      优点:使用时无需加前缀,更简洁

      缺点:容易与当前名称空间中的名字冲突

    模块路径

      模块搜索路径的优先级

      1 内存中已经加载过的

      2 内置模块

      3 sys.path # 第一个值是当前执行文件所在的文件夹

      

      导入其他文件中的模块

      sys.path(r'文件路径')

      from 文件名 import 模块名

      环境变量是以当前执行文件为准的

      强调:所有被导入的模块参照环境变量sys.path都是以执行文件为准的

      所有被导入的模块再去导入其他模块,参照的都是执行文件的sys.path

      

      包

      本质就是文件夹

      函数可以使得同一给文件中代码结构更清晰

      模块都是以文件形式来组织代码结构

      如果文件越来越多管理起来也不方便,所以需要使用文件夹来管理

      包的使用

      新建一个文件夹就是一个包

      包和文件夹仅有一个区别就是包中应该包含一个__init__.py文件

      __init__.py文件的作用

      包也是模块

      在导入一个模块时发生三件事都一样

      问题是第二步需要执行被导入文件的代码,包只是个文件夹不能直接执行,

      所以需要提供一个py文件用来代表这个包成为一个模块

      init是初始化单词的缩写,表示对包中的内容进行初始化

      包的初始化其实就是导入这个包中所有其他模块

      总结:导入包时本质就是在导入包下的__init__.py文件

      注意:init文件的作用仅仅时导入包内模块,提供给外界使用,不应该在里面写逻辑代码

      init在python2中要求必须有,在python3中式可选的

      如果没有提供init文件,在使用模块时就直接使用文件夹点需要的模块名称

      init的好处

      可以将包内模块的功能直接导入到init文件中

      这样对对于包的使用者可以无需考虑要使用的功能在哪个文件中,直接调用功能即可

      使用包的流程

      1 创建一个包

      2 编写包内部的模块代码

      3 写完后打开init文件,将需要提供给外界使用的模块导入其中(可以省略)

      相对导入和绝对导入

      相对导入指的时对某个模块而言的导入路径

      执行文件不能使用相对导入

      绝对导入指的时从执行文件开始的绝对路径,注意不是文件的酒店路径

      导入时需要注意

      1 import 导入时,点的后面必须时一个模块或包名

      2 form 导入式 import 后面不能出现点

  • 相关阅读:
    网络流量监控工具iftop
    CentOS6.X安装vsftpd服务
    CentOS 6.x版本升级Mysql
    CentOS 5.x版本升级Mysql
    CentOS 5.x版本升级PHP
    CentOS 6.X版本升级PHP
    Spring bean configuration inheritance
    cannot load such file -- openssl
    第八章、Linux 磁盘与文件系统管理
    Laravel Configuration
  • 原文地址:https://www.cnblogs.com/LinChengcheng/p/10299048.html
Copyright © 2011-2022 走看看