作者: ElfACCC | 来源:发表于2018-10-21 17:42 被阅读8次

1、模块

  • 一个模块就是一个包含python代码的文件,后缀名市.py就可以

  • 为什么我们用模块

    • 程序太大,编写维护非常不方便,需要拆分
    • 模块可以增加代码重复利用的方式
    • 当做命名空间使用,避免命名冲突
  • 如何定义模块

    • 模块就是一个普通文件,所以任何代码可以直接书写
    • 不过根据模块的规范,最好在模块里编写一下内容
      • 函数(单一功能)
      • 类(相似功能的组合,或者类似业务模块)
      • 测试代码
  • 如何使用模块

    • 模块直接导入

      • 加入模块名称直接以数字开头,需要借助importlib帮助
    • 语法

          import module_name
          module_name.function_name
          module_name.class_name
      
    • 案例01,02,p01,p02

    • import 模块 as 别名

      • 导入的同事给模块起一个别名

      • 其余用法跟第一种相同

      • 案例p03

              import p01 as p
              stu = p.student("yueyue",18)
        
    • from module_name import func_name,class_name(用哪个就导入哪个,有选择性导入,不用写前缀了)

    • 案例p04

          from p01 import student,sayhello
          stu = student()
          stu.say()
          sayhello()
      
    • from module_name import * (把所有东西都导入,可以不用前缀了但是可能会有命名污染)

      • 案例p05

              from p01 import *
              sayhello()
              stu = student("yueyue",18)
              stu.say()
        
  • 有效避免模块代码被导入的时候被动执行的问题

  • 建议所有程序的入口都一次代码为入口

           if __name__ == '__main__'
             print("不会在其他模块中执行")
    

2、模块的搜索路径和存储

  • 什么是模块的搜索路径:

  • 加载模块的时候,系统会在哪些地方搜索此模块

  • 系统默认的模块搜索路径:

      import sys
      sys.path //属性可以获取路径列表
    
  • 添加搜索路径

        sys.path.append(dir)//用来添加路径
    
  • 模块的加载顺序

    • 1、搜索内容中已经加载好的模块
    • 2、搜索python的内置模块比如print
    • 3、搜索sys.path路径

3、包

  • 包是一种组织管理代码的方式,包里面存放的是模块
  • 用于将模块包含在一起的文件夹就是包
  • 包的导入操作
    • import package_name
      • 直接导入一个包,可以使用_init_.py中的内容

      • 使用方式是:

            package_name.func_name
            package_name.class_name.func_name()
        
      • 此种方式的访问内容是

      • 案例:创建文件夹pkg01,p07.py

  • import package_name as p
    • 具体用法跟作用方式,和上述简单导入一致
    • 注意的是此种方式是默认对_init_.py内容的导入
  • import package.module
    • 导入包中某一个具体的模块

    • 使用方法:

           package.module.func_name
           package.module.class.fun()
           package.module.class.var
        - 例子:
        
               import pkg01.p01
               stu = pkg01.p01.Student()
               stu.say()
      
  • import package.module as pm使用方法基本都一样
  • from package import module1,module2,......导入方法
    • 此种方法不执行'_init_'的内容(可以不用写包名)

            from pkg01 import p01
            p01.sayhello()
      
  • from package import *
    • 导入当前包'_init_.py'文件所有的函数和类

    • 使用方法:(不用写前缀)

           func_name()
           class_name.func_name()
           class.name.var
      
  • from package.module imort *
    • 导入包中指定的模块的所有内容

    • 使用方法:

           func_name()
           class_name.func_name()
      
  • 在开发环境中经常会用其他模块,可以在当前包中直接导入其他模块中的内容
    • import 完整的包或者模块的路径
  • '_all_'用法:
    • 在使用from package import * 的时候,*可以导入的内容
    • '_init.py'中如果文件为空,或者没有'_all',那么只可以把'_init_'中内容导入
    • '_init'如果设置了'_all'的值,那么按照其指定的子包或者模块进行(一般包里面'_init'就是空的),一旦定义了'_all',init中其他内容不载入
    • '_all_' = [模块1,模块2,包1,……]

4、命名空间

  • 用于区分不同位置不同功能但相同名称的函数或者变量的一个指定前缀

  • 作用是防止命名冲突

     setName()//是当前的
     Student.setName()//学生的
     Dog.setName()//狗的

相关文章

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • Golang-基础包

    math包 strconv包 json包 time包

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • npm使用手册

    目录 # 包的管理# ----》创建包# ----》安装包# ----》删除包# ----》发布包# ----》更...

  • 生信小组DAY6-JANE

    R包R语言的包,常常听到各种名字,扩展包、程序包、软件包、函数包、算法包……不如单名一个“包(Package)”字...

  • “包治百病”却拯救不了你的“烂人生”

    1. 包个包个包包那是什么包 包个包个包包这个害人包 一包一包一包包包催人傻 妙龄青春女孩已经犯错了!!! 包是什...

  • linux 指南II 软件安装

    包全名与包名包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径包名: 操作已经安装的软件包时,使用包...

  • linux 安装命令管理

    包全名与包名包全名:操作的包是没有安装的软件包时,使用包全名而且要注意路径包名: 操作已经安装的软件包,使用包名 ...

  • 构建CentOS httpd RPM包

    安装依赖包 下载apr及httpd源码包 编译apr rpm包 安装apr包 编译http包 安装http包

  • 全网最详细的游戏包解读:小白也能看懂

    一.游戏包的概念: 目前的游戏包大部分是大家所熟知的下载包,像官方包,企业包(官网包),吸量包,联运包 当然现在有...

网友评论

      本文标题:

      本文链接:https://www.haomeiwen.com/subject/xpavzftx.html