正如標題所說,我試圖運行一個函式大約 30 多次,但每次運行不同的變數。我試圖將每次運行時保存為不同的變數,因為之后將對它們進行不同的計算。這是一個示例:
first = my_func(name = a, desc = b, ticker = c)
first.dict_name1 = z_score(first.data,12)
second = my_func(name = d, desc = e, ticker = f)
second.dict_name1 = ... (a diff calculation)
third = my_func(.....same process....)
class my_func:
def __init__(
self,
name = [],
desc = '',
# tickers can be loaded as a list of strings, or if a custom field is needed it can use a tuple
tickers = [],
indicator = [],
signal = []
):
self.name = name
self.desc = desc
self.tickers = tickers
self.data = {}
self._data = {}
for ticker in tickers:
# check if the ticker is a tuple, if so call the custom field
if isinstance(ticker, tuple):
self.load_data(ticker[0],ticker[1])
else:
self.load_data(ticker)
def load_data(self,ticker, field='PX_LAST'):
self.data[ticker] = bbg.bdh(ticker, fld_list = field, start_date='19300101')
uj5u.com熱心網友回復:
將每次運行的引數保存在一個串列中并對其進行迭代。
lst = [(a, b, c), (d, e, f)]
results = [my_func(name=name, desc=desc, ticker=ticker) for name, desc, ticker in lst]
uj5u.com熱心網友回復:
這是回圈和串列的一個很好的用例。串列串列保存每個呼叫的引數,并將它們收集在結果串列中
my_func_table =
# name, desc, ticker
[1, 2, 3],
[4, 5, 6],
[7, 8, 9] ]
results = []
for name, desc, ticker in my_func_table:
val = my_func(name=name, desc=desc, ticker=ticker)
val.dict_name1 = z_score(val.data,12)
results.append(val)
您還可以將這些結果與名稱相關聯。可能是帶有名稱的字典、全域命名空間,甚至是具有名稱作為屬性的普通類。
result_names = ["first", "second", etc...]
for var, vals in zip(result_names, my_func_table):
name, desc, ticker = vals
val = my_func(name=name, desc=desc, ticker=ticker)
val.dict_name1 = z_score(val.data,12)
globals()[var] = val
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/464569.html
標籤:Python python-3.x 功能
上一篇:object.__str__和object.__repr__有什么作用?警告:它與Class.__str__和Class.__repr__不同
