用户
搜索

[二进制安全] Python import使用

  • TA的每日心情
    无聊
    2020-10-11 21:19
  • 签到天数: 102 天

    连续签到: 1 天

    [LV.6]常住居民II

    版主

    Rank: 7Rank: 7Rank: 7

    39

    主题

    160

    帖子

    2044

    魔法币
    收听
    1
    粉丝
    1
    注册时间
    2016-6-28

    i春秋认证积极活跃奖

    发表于 2020-9-25 22:51:47 27013

    前言

    接触python有一段时间了,但是对import的使用还是一知半解`,在最近的开发中,遇到了关于import的问题,学习后写出来供参考

    使用

    import作用

    import用来导入Package或者Module,导入后即可调用其功能

    • Package 通常Package是一个目录,导入的时候可以使用语句
    from PackageName import ModuleName

    或者Package目录下有入口文件init.py则可以直接

    import PackageName

    多数时候我们都在调用别人写好的package,有Idle自带的也有自己pip安装的

    • Module Module通常是一个文件,可以直接import导入
    import ModuleName

    也可以直接导入单一的功能

    from ModuleName import FunctionName

    Module常见格式有.py .pyo .pyc .pyd .so .dll 如果想导入多个module,则可以直接用逗号分隔开

    import random, sys, os, socket

    一个一个导入也可以

    import random
    import sys
    import os
    import socket

    绝对导入和相对导入

    在import的使用语法中,我们用.来替代/ 绝对导入和相对导入有些类似于绝对路径和相对路径 比如我们有以下目录结构

    • Root
    • init.py
      • Package_one
      • Module_one.py
      • Module_two.py
      • Package_two
      • Module_three.py
      • Module_four.py
      • Package_three
        • init.py

    绝对导入

    如果此时root目录下init.py想要导入Package_one中Module_one中的function_one 则可以使用以下语句

    from Package_one.Module_one import function_one

    绝对导入的优点是位置非常的明确和直接,PEP8明确建议采用绝对导入,同时缺点也很明确,在大的项目中,import可能会非常的冗长比如你可能出现

    from XXX.XXX.XXX.XXXX.XXX.XXX import FunctionName

    此时相对导入的好处就显现了出来

    相对导入

    就像相对路径一样,我们用一个.来表示当前目录,用两个..来表示上一级目录 还是刚才的目录结构

    • Root
    • init.py
      • Package_one
      • Module_one.py
      • Module_two.py
      • Package_two
      • Module_three.py
      • Module_four.py
      • Package_three
        • init.py 比如在Module_one中,我们要导入Module_two,那么我们可以直接
    from . import Module_two

    如果要导入Module_two中的function_one

    from .Module_two import function_one

    在跨目录时可以使用..来返回上级目录 比如我们要在Module_one中导入Module_four 则可以使用

    from ..Package_two import Module_four

    不幸的是,相对导入可能是混乱的,特别是对于目录结构可能改变的共享项目。相对导入也不像绝对导入一样可读,而且很难识别导入资源的位置。

    本帖被以下淘专辑推荐:

    • · sc|主题: 64, 订阅: 3
    学习了,谢谢版主
    使用道具 举报 回复
    发表于 2020-9-29 18:04:33
    emmm,可以,学习到了
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册