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实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/progor/p/8413274.html
Copyright © 2011-2022 走看看