让所有函数设置所有变量似乎很容易。但事实证明,这种隐性共享状态已成为维护工作的噩梦。
相反,使用不可变的数据类;它们或多或少地提供了您所要求的便利,但允许对代码进行更简单的推理。
@dataclass
class Settings:
a: str =""
b: int =5
...
def parent():
s = initialize(Settings(c=[1,2,3]))
use(s.a, s.b)
...
def initialize (s: Settings):
return dataclass.replace(s,
b=10, d="@#$_"
)