10 模块与包[python基础]

python模块介绍

  • 什么时模块?

        //模块和包就像是文件和文件夹的关系。
    
        //模块就是程序,模块的名称就是不含.py后缀的文件名
    
        //模块力一般是放的可重用的一些方法等。
    
  • 如果没有模块将会怎么样?

        //可维护性更强
    
        //方便代码重用
    

模块导入、引用及定位

  • 导入:import

        //新建hello.py  hello模块
    
        def func():
    
            print('hello')
    
        //在其他程序文件引用模块,新建test.py
    
        import hello
    
        hello.func()    //结果输出hello
    
  • 定位:当前包>内置函数>sys.path(环境变量,这个环境变量是python的一个专属环境变量,它在内置模块sys中,用 import sys->>sys.path 就能看到)

        //首先在当钱包中找,然后再内置函数中找,最后去环境变量找
    
     ![image.png](https://upload-images.jianshu.io/upload_images/10345717-bd3a776034a787f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
        //不过不在hello.py模块同目录下引用hello,会出现没有hello模块的报错
    
        ![image.png](https://upload-images.jianshu.io/upload_images/10345717-4bf0efd3ede4c560.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
        //通过把包含hello.py的目录加入到python专属环境变量sys.path中,就可以实现引入hello模块.  加入方法:import sys>>sys.path.append("目录路径")>>sys.path 
    
        //注意如何保存的问题.还要注意append时目录路径要用双斜杠,这是windows环境变量的规定写法
    

模块的属性

  • dir----列出对象的所有属性及方法

        import hello
    
        dir(hello)   //返回模块所有的属性和方法,其中除了func是我们自己写入的,其他都是python自动初始化生成,['__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','__func__',]   (都是双下划线)
    
        //hello里面的方法也是可以通过dir查看的
    
        dir(hello.func)  //会列出很多初始化生成的内容,__new__和__init__就包含在内.
    
  • help---查看类,方法的帮助信息

        help.__name__    //返回模块名'hello',模块名默认就是文件名去掉.PY
    
        help(hello)   //可以看到文档注释,方法注释,名字,目录等
    
        help(hello.func)  //可能方法用法注释
    
        help.__doc__  //返回文档注释
    
  • name-------模块的名称

  • file------模块文件的全路径 'C:\USERS\..\..\hello.py'

        //在控制台操作时,修改了py代码要用quit()退出文件再重新加载才可以生效.
    
        //自定义模块要先把方法框架和注释做好,最后填充代码
    

包的简介

  • 可以用来组织模块(可以包含其他模块的模块),类似文件夹,文件夹也是另一个文件夹的模块

  • 目录必须包含文件init.py(下划线)

  • 模块重名问题解决

        模块名相同,只要不再同一个包就可以,所以包可以解决模块重名问题
    
      ![image.png](https://upload-images.jianshu.io/upload_images/10345717-2a05f8a78b37d056.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

包的引用

  • 引入整个包:import module //和引入模块一样,包也被看做是一个模块

  • 只是引入所需要的属性和方法 //from module.xx.xx inport xx (从哪个地方引入)

        from pay.alipay.tools import pay 
    
  • 指定别名:from module.xx.xx import xx as renename //用于从不同包引入同名模块

  • 引入所有:from module.xx import * 避免引入重名包,尽量避免这种写法.

    //注意:引用整个包的方法和注意事项
    
    //如果想引入如图中的整个pay,然后使用alipay/tools.PY里面包含的方法
    
    //应当首先再pay下的_init_.py中加入
    
        from . import alipay   
    

    //注意当我们进入控制台时如果是再pay包上层目录时,需要使用from . import alipay "."的意思时运行from时在pay的当前目录下找,而不是去进入控制台时的chapter01目录中找.

    //如果不存在上面情况,可以直接用 import alipay

    //然后再alipay下的_init_.py中加入
    
        from . import tools
    
    //调用tools.py中的pay方法
    
        import pay   //这个pay是最上层的包
    
        pay.alipay.tools.pay()
    

你可能感兴趣的:(10 模块与包[python基础])