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,提问作者Константин Прудников
相关产品推荐
相关产品推荐

