[英]Stuck with python functions and global variables thinking?
我目前正在分析财务数据,因此我需要使用某个函数,比如说某种类型的移动平均线,在代码中的不同时间、不同的时间序列和不同的时间范围内。
要初始化一个函数,我需要声明一个全局变量,但该变量显然会保留上一次迭代的值,就像我制作的以下玩具示例一样,我需要向数组添加一个新的随机变量:
import numpy as np
import pandas as pd
def _foo_append_(x_i,count):
global x
if count==0:
x = []
x.append(x_i)
return x
for i in range(0,10):
rv_1 = np.round(np.random.normal(10,5),decimals=2)
rv_2 = np.round(np.random.normal(22,3),decimals=2)
keep_1 = _foo_append_(x_i=rv_1,count=i)
keep_2 = _foo_append_(x_i=rv_2,count=i)
在这种情况下,我显然得到了 20 个元素的 bot keep1 和 keep2,但是这两个数组都应该由 10 个元素组成。
所以同样,它不是关于特定功能,而是如何处理这样的需求。
我需要一个每次都被调用的函数,它自己创建一个新的 UNIQUE 全局变量,以便这个变量成为我的输出
_foo_append_01()
、 _foo_append_02()
、...、 _foo_append_N()
在每个函数中,我将有不同标记的全局变量。该解决方案有效,但我认为这是构建软件的非常糟糕的方式。
同样,它不是关于特定的代码或功能,而是如何处理这种想法。
我应该如何思考和构建满足我需求的最佳解决方案? 谢谢
我很难理解你在问什么,但听起来你需要为这些数字创建单独的列表,这是否符合你的需要?
import numpy as np
import pandas as pd
globalVar = []
def _foo_append_(x_i,index):
if index > len(globalVar):
globalVar.append([])
globalVar[index-1].append(x_i)
return globalVar[index-1]
for i in range(0,10):
rv_1 = np.round(np.random.normal(10,5),decimals=2)
rv_2 = np.round(np.random.normal(22,3),decimals=2)
keep_1 = _foo_append_(x_i=rv_1,index=1)
keep_2 = _foo_append_(x_i=rv_2,index=2)
您只需要稍后找到一些创建新索引的方法,可能只是使用类似的东西
newIndex = len(globalVar) + 1
或者其他的东西
import numpy as np
import pandas as pd
class Foo(object):
def __init__(self):
self.x_arr = list()
def _foo_append_(self,x_i,count):
self.x_arr.append(x_i)
return self.x_arr
for i in range(0,10):
rv_1 = np.round(np.random.normal(10,5),decimals=2)
rv_2 = np.round(np.random.normal(22,3),decimals=2)
if i==0:
Foo1 = Foo()
Foo2 = Foo()
keep_1 = Foo1._foo_append_(x_i=rv_1,count=i)
keep_2 = Foo2._foo_append_(x_i=rv_2,count=i)
仍然不喜欢使用if==0:
强制初始化进程,我想找到一种方法来避免该调用。 但是这段代码正在运行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.