V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Suger828
V2EX  ›  程序员

py 程序你们喜欢一个 config 传来传去吗

  •  
  •   Suger828 · 30 天前 via Android · 2048 次点击
    看到有很多喜欢一个 config 到处传,每个地方都有可能改变 config 的结构和内容,读代码噩梦
    10 条回复    2025-07-04 17:37:11 +08:00
    Romic
        1
    Romic  
       30 天前
    哈哈哈 单一入口 python 是不存在这个逻辑的。
    r6cb
        2
    r6cb  
       30 天前
    启动的时候将.env 文件中的内容放到环境变量,后面哪里要用直接读环境变量,耦合低,而且增删配置项都很方便
    skiy
        3
    skiy  
       30 天前
    哈哈。有其它解决办法吗?连 AI 都是这么给代码的。
    w568w
        4
    w568w  
       30 天前
    这个是设计问题,因为 Python 本来就是快工出糙活的语言,讲究一个快速迭代、原型验证。

    你说的这种方式在 AI 相关项目中最常见,因为一开始设计的时候没有想清楚需要哪些配置(这一阶段也没有必要考虑,因为根本不知道会不会有用户),后面需求随着用户量一起复杂起来,本着最小修改的倾向,自然就会开始在上下文对象上挖洞,添加各种可变属性或者更复杂的机制。直到最后阶段把 config 变成巨型克苏鲁,不得不重构。

    所以,你的问题不是 Python 问题,是工程学问题。再往大了说,先积累后清扫是人类思维的惯性。
    cnt2ex
        5
    cnt2ex  
       30 天前
    只要把 config 的初始化集中在一个地方,初始化后就不要修改,一个 config 到处传我感觉问题没多大。这样,很多时候还方便加新的键值对,而不需要一个一个方法/函数的改签名。

    但如果把 config 当返回值使用,代码随处在修改 config 的值,然后再到处乱传就恶心了。这种代码读起来简直要命,一般读一遍下来根本不知道哪里传来的值。
    cquan
        6
    cquan  
       30 天前
    我用.env
    Rorysky
        7
    Rorysky  
       30 天前
    搞成全局的
    Suger828
        8
    Suger828  
    OP
       30 天前 via Android
    @cquan 这个 config 不是配置文件,相当于一个上下文,什么地方都会用,什么地方都能改变内容和结构
    CodingIran
        9
    CodingIran  
       29 天前
    不太懂 py ,是不是其他语言里的全局变量?
    hmxxmh
        10
    hmxxmh  
       29 天前
    @r6cb 我在想这种方式是不是不安全,环境变量外面 1 被人改了怎么办,还是说是程序启动的时候会把环境变量加载到内存中
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2605 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:12 · PVG 12:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.