zoukankan      html  css  js  c++  java
  • Python模块导入详解

    定义

    模块:用来从逻辑上组织Python代码(变量、函数、类、逻辑)去实现一个功能。本质就是.py结尾的Python文件。

    包:用来从逻辑上组织模块的(可以放一堆模块在目录下)。本质就是一个目录(必须带有一个__init__.py文件)。

    导入模块

    导入单个:

    import 模块名

    导入多个:

    import 模块名1,模块名2
    

      

    导入模块中所有代码:

    from 模块名 import *
    

      

    import导入于from 模块名 import *导入在调用上的区别:

    module.function()
    function()
    

      

    跨目录导入包:

    import sys
    print(sys.path) #python会去哪些目录下找模块,是一个列表
    Module_Dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #获取到模块目录
    sys.path.append(Module_Dir)#把模块目录加到sys.path列表中
    import 要导入的模块
    

      

    代码说明

    module_test.py

    def Index():
    	print("Welcome to Index Page.")
    

      

    main.py

    # import module_test
    from module_test import * #这种是把模块中的代码复制到了这个py脚本中
    from module_test import Index as Index_module #如果导入的模块中函数与该py脚本中的函数名一样,使用as别名

    def Index():
    print("Main Page")
    # module_test.Index() #这样调用是不行的
    Index()
    Index_module()

      

    输出结果如下:

     

    import本质

    就是把Python文件解释一遍。

    比如我们导入requests模块,requests = requests模块中的所有代码,所以调用的时候需要requests.function()。

    import requests
    

     

    而使用from导入的时候,是把模块中的代码复制到了这个py脚本中,所以调用的时候直接使用函数。

    导入包

    导入包的本质是去执行包下的__init__.py文件。

    import packagename

    如果调用包中的模块呢?

    因为本质是读取__init__.py文件,因此在__init__.py文件写要导入的模块(相对导入)。

    from . import 模块名
    

      

    调用的话就是

    packagename.模块名.function()
    

      

     

     

    代码演示

    __init__.py:

    print("in the package")
    

      

    main.py:

    import package
    

      

    运行效果:

    导入优化

    import导入:使用多次模块中的函数的话,会重复找路径的动作,效率会低,因此可以使用from方法导入来优化脚本效率。

    module.function()
    

      

    模块的分类

    • 标准库(也叫内置模块)
    • 开源模块(也叫第三方模块)
    • 自定义模块
  • 相关阅读:
    vue-loader
    slot内容分发
    单向数据流
    vue父子组件(1.0)
    vue组件
    vue过渡
    vue之自定义组件
    jquery下拉菜单
    vue之过滤器
    【数学】数学归纳法
  • 原文地址:https://www.cnblogs.com/endust/p/12307528.html
Copyright © 2011-2022 走看看