zoukankan      html  css  js  c++  java
  • 学习笔记-Python基础10-包、模块的引入

    一、模块

      

      1、以下是在p02文件中调用p01模块:

    2、以下是在02文件中调用01模块:

    3、以下是给以导入模块起别名的方式在p03文件中导入p01模块:

    4、以下是p04中导入模块时有选择性的只导入p01模块中自己要用的内容而不导入其他:

     

    5、from module_name import *

        导入模块所有内容,与直接使用import导入,这种导入不需要使用模块名前缀

     其他知识点:模块中,__name__ == __main__,表示代码在模块内执行的时候其名字是主进程,当在其他文件中被import引入的时候其名字是模块名

      1、可以有效避免模块代码被导入的时候被动执行问题

      2、这句话建议作为程序的入口

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

        什么事模块的搜索路径:加载模块的时候,系统会在哪些地方寻找此模块

      系统默认的模块搜索路径,此处注意这是系统默认的模块搜索路径

        import sys

        sys.path 属性可以获取路径列表

        

        添加自定义搜索路径:sys.path.append(dir)

        模块的加载顺序:

          1、先搜索内存中已经加载好的模块

          2、搜索python的内置模块

          3、搜索sys.path路径

    二、包

      包是一种组织管理代码的方式,包里面存放的是模块

      把模块包含在一起的文件夹就是包

      自定义包的结构:

        | --- 包

          | --- __init__.py  包的标志文件

          | --- 模块1

          | --- 模块2

          | ---- 子包(子文件夹)

            | --- __init__.py  包的标志文件

            | --- 子包模块1

            | --- 子包模块2

      包的导入操作

        1、import package_name

            直接导入一个包,便可以使用__init__.py中的内容,使用方法:

              package_name.func_name()

              package_name.class_name.func_name()

          import package_name as 包别名

          上述两种方法默认是对__init__.py内容的导入

          下面的例子是在p07文件中引入pkg01包:

        

        2、import package.module,导入包中某个具体的模块

           使用方法:

            package.module.func_name()

            package.module.class.func()

            package.module.class.var

          import package.module as 包下模块的别名

          

        3、from ... import ...

          from backage import module1, module2  这种导入方法不执行__init__的内容

            实例写法:from bkg01 import p01

                 p01.sayHello()

          from backage import *  只导入当前包里__init__.py中的所有函数和类,特别注意此导入方法不导入当前包里的其他模块

            写法:func_name()

               class_name.func_name()

               class_name.var

          from backage.module import *  导入包中指定模块里的所有内容

            写法:func_name()

               class_name.func_name()

         其他导入:在开发环境中经常会用到其他模块,可以再当前文件中直接导入其他模块,写法是import 完整的包或者模块的路径

         __all__的用法:

          在使用from backage import * 的时候,* 可以导入的内容

          __init__.py文件中如果内容为空,或者没有__all__,那么只可以把__init__.py里的内容导入,说白了导入也是空

          __init__.py文件中如果设置了__all__的值,那么则按照__all__指定的子包或者模块导入,而不会再载入__init__中的内容

          写法:__all__=['module1', 'module2', 'backage1', ...]

          

         命名空间:用于区分不同位置、不同功能,但有相同名称的函数或者变量的一个特定前缀(此处理解为包),用于防止命名冲突

            setName()、Student.setName()、Dog.setName()

            

  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/Cloudloong/p/9707025.html
Copyright © 2011-2022 走看看