zoukankan      html  css  js  c++  java
  • 8.什么是模块,模块的导入,__name__


    相关内容:

    • 什么是模块
    • 模块的导入
      • 模块的导入
      • 自模块的导入
        • 同级目录导入
        • 不同级目录导入
          • 目录内导入目录外
          • 目录外导入目录内
    • __name__

    首发时间:2018-02-04 15:23

    修改:

    1. 2018-02-20 14:50
      1. 新增了前言“相关内容”
      2. 增加了对什么是模块的少量描述细节
      3. 模块导入中不同目录导入新增“目录外的导入目录内的”


    什么是模块:

    在Python中,模块就是一个个方法和类的仓库,如果我们想要使用某个模块中的某个方法或类,那么我们就需要导入对应的模板。

    【python有内置方法、类,所以有些方法我们并不需要导入模块】

    模块的使用:模块.函数 ,     模块.类

    #函数
    import math
    print(math.sqrt(3))
    #类
    import threading
    a=threading.Thread()
    print(a)


    模块的导入:

    • 模块导入:

      • import 模块名
      #import 模块名
      import math
      print(math.sqrt(9))
      • from…import 语句:从模块中导入一个指定的部分,如类、方法,其中from…import * 代表导入全部内容
    #from 模块名 import 类名、方法名
    from collections import Iterable 
    print(isinstance("abc",Iterable))
    print(isinstance([1,2,3],Iterable))
    • from…import导入的时候还能给导入的部分起个自定义的名字:如:from … import funcA as fa
    • 自模块导入:

    Python import 的搜索路径

    1.在当前目录下搜索该模块

    2.在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 【可以从sys.path中获取】

    import sys
    print(sys.path)
    
    ----------
    运行结果:
    ['J:\HardWork\Code\python', 
    'J:\HardWork\Code\python',
     'I:\python3\python36.zip',
     'I:\python3\DLLs', 
    'I:\python3\lib',
     'I:\python3', 
    'I:\python3\lib\site-packages']

    3.在 Python 安装路径的 lib 库中搜索

      • 同级目录导入:直接导入

     image_thumb

    image_thumb[2]

    image_thumb[4]

      • 不同级目录导入:将对应目录加入到sys.path中,再import

        • 目录内的b导入目录外的c

    目录结构:image

    c中内容:image

    b中如何导入c:

    import sys,os
    
    print(__file__)##这是当前文件的绝对路径
    parent_dir=os.path.dirname(__file__)##获得当前文件的目录
    pp_dir=os.path.dirname(parent_dir)
    sys.path.append(pp_dir)
    # print(sys.path)
    import c     #要导入c,必须将diff_dir加入sys.path中

     

        • 目录外的c导入目录内的d

    目录结构:image

    d中内容:image

    c中如何导入d:

    from d2 import d

    或:

    import d2.d

    结果:image


    __name__:

    由于模块既可以被导入,也可以被直接运行,为了区分什么是直接运行时运行的内容,所以有了__name__:

    当直接运行时,__name__是__main__:

    print("import C done")
    print(__name__)
    
    if __name__=='__main__':
        print("direct run")
    
    ---------------
    运行结果:
    import C done
    __main__
    direct run

    当用于导入时,__name__是当前导入的模块名,由于__name__不等于__main__,所以不会执行image_thumb[7]

    import sys,os
    
    # print(__file__)##这是当前文件的绝对路径
    parent_dir=os.path.dirname(__file__)##获得当前文件的目录
    pp_dir=os.path.dirname(parent_dir)
    sys.path.append(pp_dir)
    # print(sys.path)
    import c     #要导入c,必须将diff_dir加入sys.path中
    
    
    
    
    ------------------
    运行结果:
    import C done
    c

  • 相关阅读:
    java实现httpclient 访问
    推荐博文
    Running With xpi
    1 Spring MVC 原理
    windows服务相关
    求职面试三部曲
    使用mvn插件执行工程单元测试OOM的解决办法
    maven-surefire插件问题
    小问题
    NFA到DFA实例
  • 原文地址:https://www.cnblogs.com/progor/p/8413274.html
Copyright © 2011-2022 走看看