开发者

Python 文件常数引用问题小结

目录
  • 了解python
    • Python介绍
    • Python特点
  • 这在工程化中非常常见
    • 一、定义常数文件(比如 config_const.py)
      • 二、在其他 Python 文件中引用
        • 三、项目结构推荐
          • 四、如果要让常量可以跨模块修改(例如参数调整)
            • 五、总结对照表

              了解Python

              Python介绍

              Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

              Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

              • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于php和perl语言。
              • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
              • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
              • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏
              • Python目前分为两种流行版本

              ① Python 2.0x

              ② Python 3.0x

              首先Python 3的版本是现在与未来的主python流版本

              在Python3.5+以及以上的版本,不支持Windows xp以及更低的系统

              并且在Windows 7当中必须安装sp1补丁包才可以运行

              建议选择Python 3.6.1-2017-03-21这种文件名的版本,是比较稳定发布的版本

              Python特点

              • 1.编程客栈易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
              • 2.易于阅读:Python代码定义的更清晰。
              • 3.易于维护:Python的成功在于它的源代码是相当容易维护的。
              • 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在Unix,Windows和MACintosh兼容很好。
              • 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
              • 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
              • 7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
              • 8.数据库:Python提供所有主要的商业数据库的接口。
              • 9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
              • 10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力

              在一个 Python 文件里定义一些常数,比如模型路径、视频保存开关、窗口尺寸等,

              然后在另一个文件里能直接引用这些常数php,而不用重复写一遍。

              这在工程化中非常常见

              一、定义常数文件(比如 config_const.py)

              可单独建一个文件,例如:

              config_const.py

              # config_const.py
              # -------------------------
              # 全局常数定义文件
              # -------------------------
              # 视频保存相关
              SAVE_VIDEO = True
              VIDEO_FPS = 20
              VIDEO_WIDTH = 1280
              VIDEO_HEIGHT = 720
              # 模型路径
              MODEL_PATH = "weights/lane_detect_model.engine"
              # 其他常量
              DETECTION_THRESHOLD = 0.5

              二、在其他 Python 文件中引用

              比如在 run.py 想用这些常量,只需:

              from config_const import SAVE_VIDEO, VIDEO_FPS, VIDEO_WIDTH, VIDEO_HEIGHT
              # 使用
              if SAVE_VIDEO编程客栈:
                  out_writer = cv2.VideoWriter("output.mp4", cv2.VideoWriter_fourcc(*'mp4v'), VIDEO_FPS, (VIDEO_WIDTH, VIDEO_HEIGHT))

              或者直接导入整个模块:

              import config_const as C
              if C.SAVE_VIDEO:
                  print(f"保存视频尺寸:{C.VIDEO_WIDTH}x{C.VIDEO_HEIGHT}")

              三、项目结构推荐

              project/
              │
              ├── run.py
              ├── postprocess_lanes.py
              ├── config_const.py   存放全局常量
              ├── utils/
              │   ├── __init__.py
              │   ├── video_utils.py
              │   └── model_utils.py

              这样所有文件都可以用:

              from config_const import *
              

              或:

              import config_const as C
              

              四、如果要让常量可以跨模块修改(例如参数调整)

              可以把常量写在一个类或字典中,方便动态修改:

              # config_const.py
              class Config:
                  SAVE_VIDEO = True
                  VIDEO_FPS = 20
                  VIDEO_WIDTH = 1280
                  VIDEO_HEIGHT = 720
              

              然后在别的文件用:

              from config_const import Config
              Config.SAVE_VIDEO = False  # 修改也能影响全局引用
              print(Config.VIDEO_FPS)

              五、总结对照python表

              方式优点缺点
              直接定义常量(推荐)简洁明了,易维护不能动态修改
              类封装(Config)可读性高,支持动态修改稍微多写一点
              jsON/YAML 文件读取易于配置化需要额外读取逻辑

              建议在项目中专门建一个 config_const.py 来集中放置这些常数。

              例如像现在的 config_p 一样,就可以把默认值放在常数文件里,这样别的模块都能引用。

              到此这篇关于Python 文件常数引用问题小结的文章就介绍到这了,更多相关Python 文件常数引用内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

              0

              上一篇:

              下一篇:

              精彩评论

              暂无评论...
              验证码 换一张
              取 消

              最新开发

              开发排行榜