zoukankan      html  css  js  c++  java
  • Python引用与目录结构


    哎。差点找不到之前写的这篇笔记。

    Python引用与目录结构

    模块的概念

    模块即单个.py文件。
    模块名即文件名。

    引用模块:

    1. 只在第一次引用时执行、且执行一次。

    2. 引用及使用方法:

      # 仅引模块
      import module
      m1.fun() ##使用其内变量/函数,必须使用"模块名."。否则报错
      
      # 引模块的特定变量/函数
      from module import fun
      fun() ##不必使用"模块名."
      

    模块也是对象,具有一个内置属性__name__。该属性有两种取值:模块名__main__

    • 举例说明取值问题:当在A文件中引入B模块,A文件的__name__取值为__main__,B模块的__name__取值为模块名

    • __name__的使用场景:在import模块时,默认情况下,模块的所有语句都会被执行一次。如果希望模块中有某些语句,在import时避免执行,可以:

      if __name__ == 'main':
          ## 这里的语句将在import时避免执行
          ## 因为import时,条件为假
      

    包的概念

    包即一个文件夹。
    包含了__init__.py和一系列.py文件。包名即文件夹名。

    __init__.py是为了避免将文件夹名当作普通的字符串,其内容可以为空,一般用来进行包的某些初始化工作或者设置__all__,用以暴露该包的 API。

    引用时搜索模块的顺序

    1. 当前文件所在目录
    2. 环境变量PYTHONPATH(包含python带的模块、自己安装的模块),可以通过bash或sys.path修改

    python工程常用目录结构

    • 方式一

      -- src
          |-- mod1.py(被引用的模块)
          `-- test1.py(主程序)
      

      test1.py中直接import mod1即可。

    • 方式二:

      -- src
          |-- mod1.py(被引用的模块1)
          |-- pkg
          |	|-- __init__.py(必须有)
          |   `-- mod2.py(被引用的模块2)
          `-- test1.py(主程序)
      

      test1.pyimport mod1

      test1.pyfrom pkg import mod2

    • 方式三:

      -- src
          |-- mod1.py
          |-- pkg
          |	|-- __init__.py(必须有)
          |   `-- mod2.py
          |-- sub
          |   `-- test2.py
          `-- test1.py
      

      test1.pyimport mod1

      test1.pyfrom pkg import mod2

      test2.py

      import sys
      sys.path.append("..") ## 临时加入父目录
      ## 然后就可以正常地:
      import mod1
      from pkg import mod2
      
      

      test1.pyfrom pkg import mod2

    参考资料

  • 相关阅读:
    selenium python 中浏览器操作
    wireshark基础学习—第三部分wireshark的过滤器语法
    wireshark基础学习—第二部分wireshark的基础操作
    wireshark基础学习—第一部分wireshark的基础知识
    Python 之 tuple
    Python 之 list
    python socketpool:通用连接池
    APScheduler 3.0.1浅析
    检查SDE版本健康情况的常用SQL语句
    免重启下刷新新添加的磁盘信息
  • 原文地址:https://www.cnblogs.com/hesse-summer/p/11151741.html
Copyright © 2011-2022 走看看