在Python中初始化静态变量
上下文
假设我们要使用 Box-Muller 算法。从几个随机数 U1 和 U2 开始,我们可以生成 G1 和 G2。现在,对于任何调用,我们只想输出 G1 或 G2。在其他语言中,我们可以使用静态变量来知道是否需要生成一对新变量。在 Python 中如何实现呢?
我知道的第一个想法
是,关于 Python 中的静态变量已经说了很多,我还必须说我有点困惑,因为答案相当分散。我找到了这个 线程 和其中的引用。通过该线程,这里的解决方案是使用生成器。
细节决定成败
现在的问题是,我们如何初始化生成器以及如何保留(比如 G2)下一个yield
?
Context
Say, we want to use the Box-Muller algorithm. Starting from a couple of random numbers U1 and U2, we can generate G1 and G2. Now, for any call, we just want to output either G1 or G2. In other languages, we could use static variables to be able to know if we need to generate a new couple. How can it be done in Python?
First thoughts
I know, much had been said about static variables in Python, I also must say I'm a bit confused as the answers are quite scattered. I found this thread and references therein. By that thread, the solution here would be to use a generator.
The devil's in the details
Now, the problem is, how do we initialize the generator and how do we retain, say G2, for the next yield
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编写生成器是一个非常好的实践!
您还应该考虑拥有一个带有 get() 方法、re_initialize() 方法等的 BoxMuller 类。
Writing generators is a very good practice!
You should consider also having a class BoxMuller with a get() method, a re_initialize() one, and so on.