You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何通过函数设置模块常量并在其他函数中使用(无需传参)

解决方案:实现无需传递参数的状态管理并输出"A2"

推荐方案:用类封装状态(可扩展,支持任意数量/类型常量)

这种方式通过类作为命名空间管理常量,既避免全局变量的副作用,又能轻松扩展更多常量,是最清晰的实现方式:

class Config:
    VAR1 = 1
    VAR2 = 2

def choose_var(variation):
    if variation == 1:
        Config.VAR1 = "A"
        Config.VAR2 = 2
    elif variation == 2:
        Config.VAR1 = "B"
        Config.VAR2 = 3

def get_some_stuff():
    # 根据变量类型处理拼接,这里VAR1是字符串、VAR2是整数,需转字符串后拼接
    return str(Config.VAR1) + str(Config.VAR2)

choose_var(1)
print(get_some_stuff())  # 输出:A2

说明:

  • 所有需要管理的常量都放到Config类中作为类属性,后续新增常量直接在类里添加即可
  • choose_var直接修改类属性切换状态,get_some_stuff从类中读取状态,无需传递参数
  • 支持任意类型的常量,只要在拼接/处理时根据实际类型做对应操作即可

备选方案:使用全局变量(不推荐)

如果一定要用全局变量,需要在choose_var中声明global关键字,否则函数内的变量会被视为局部变量,无法修改全局状态:

VAR1 = 1
VAR2 = 2

def choose_var(variation):
    global VAR1, VAR2
    if variation == 1:
        VAR1 = "A"
        VAR2 = 2
    elif variation == 2:
        VAR1 = "B"
        VAR2 = 3

def get_some_stuff():
    return str(VAR1) + str(VAR2)

choose_var(1)
print(get_some_stuff())  # 输出:A2

说明:

  • 这种方式虽能实现需求,但全局变量会让代码状态管理变得混乱,尤其是变量数量增多或多线程场景下,容易引发难以排查的副作用,因此不推荐使用。

内容的提问来源于stack exchange,提问作者Константин Прудников

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:00:55