zoukankan      html  css  js  c++  java
  • python import 自己的包

    在写python时,有时候写的一个python文件可能需要被其他python文件所用,那么可以用导入包 import 的 方式:

    1.自己写的包放到哪里?

    >>> import sys
    >>> sys.path
    ['', '/usr/lib64/python34.zip', '/usr/lib64/python3.4', '/usr/lib64/python3.4/plat-linux', '/usr/lib64/python3.4/lib-dynload', '/usr/lib64/python3.4/site-packages', '/usr/lib/python3.4/site-packages']
    

     可以看到上面列举了一些文件夹地址,那么自己写的包理论上都可以放到上述地址中,但有一些如”/usr/lib64/python3.4“并不推荐,比较推荐的是:“” , “'/usr/lib/python3.4/site-packages'”, “'/usr/lib64/python3.4/site-packages'”

    2.如何导入自己写的包?

    比如“/usr/lib/python3.4/site-packages”,如果我写了 一个 exp.py 文件放在这个文件下,那么我在自己的系统写的 python3 文件都可以采用 import exp 导入。

      还可以看到还有一个是“”,及当前文件夹,假如 存在如此的 一个 文件 结构:

    parent/
            one/
             __init__.py exp.py exp2.py exp3.py

      exp.py和exp2.py都在one目录下,那么在exp2.py中可以通过 import exp 导入exp.py

      而exp3.py和one都处在parent目录下,那么在exp3.py中可以通过 import one.exp 导入exp.py

    3.__init__.py的作用

      偶尔可以看到有些人写的包下面还会有一个__init__.py,它的作用是在导入包时首先执行的。

      假设在 exp3.py 中写入 import one.exp ,那么会首先执行 __init__.py 文件,接着会执行exp.py文件

      如果不需要,__init__.py可以为空,也可以干脆不加入__init__.py

    4.if __name__ == "__main__"

      也有时候会看到 .if __name__ == "__main__" 语句,它的作用就是当此文件没有被作为导入的文件使用时执行 if 语句块里的程序。

      假如 exp.py 中加入了 if __name__ == "__main__" ,然后 python3 exp.py,就会执行这个语句块里的内容

      而 如果 if __name__ == "exp",时则是被 其他文件 以 "import exp"导入时执行的部分

      有如果是 if __name__ == "one.exp",时则是被 其他文件 以 "import one.exp"导入时执行的部分

      注意 在  "import exp"时是不会执行 if __name__ == "one.exp"中的内容的!同样: "import one.exp“是不会执行 if __name__ == "exp"中的内容的

  • 相关阅读:
    IIS-Service Unavailable
    复制datatable,把类型变为字符串
    泛类型的使用
    线程间操作无效: 从不是创建控件“button1”的线程访问它。
    .dialog打开时执行方法
    更新系统时间
    复制对象
    如何安装windows服务
    ObjectARX创建文字
    设置cad进度条的arx代码
  • 原文地址:https://www.cnblogs.com/Emerald/p/4827238.html
Copyright © 2011-2022 走看看