python - 函数在传递字符串时起作用,但在尝试传递存储在列表中的多个字符串时,它不起作用
问题描述
我有下面的代码正在工作,定义了一个包含一个字符串的列表和函数。这可以正常工作并返回我需要的数据
a = ["REQ-ETH"]
def klines_func(a):
for i in a:
klines = client.get_kline_data(a, '5min', 1507479171, 1510278278)
return klines
但是,将 a 更改为 时["REQ-ETH","REQ-BTC"]
,代码不起作用(导致 API 异常错误,但是"REQ-BTC"
单独尝试该对时,代码也可以正常工作)。
---------------------------------------------------------------------------
KucoinAPIException Traceback (most recent call last)
<ipython-input-34-2cf04cd53d1c> in <module>
----> 1 klines_func(a)
<ipython-input-26-45a04a1bad02> in klines_func(a)
1 def klines_func(a):
2 for i in a:
----> 3 klines = client.get_kline_data(a, '5min', 1507479171, 1510278278)
4 return klines
/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in get_kline_data(self, symbol, kline_type, start, end)
1833 data['endAt'] = int(time.time())
1834
-> 1835 return self._get('market/candles', False, data=data)
1836
1837 # Websocket Endpoints
/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _get(self, path, signed, **kwargs)
185
186 def _get(self, path, signed=False, **kwargs):
--> 187 return self._request('get', path, signed, **kwargs)
188
189 def _post(self, path, signed=False, **kwargs):
/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _request(self, method, path, signed, **kwargs)
156
157 response = getattr(self.session, method)(uri, **kwargs)
--> 158 return self._handle_response(response)
159
160 @staticmethod
/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _handle_response(response)
171
172 if 'code' in res and res['code'] != "200000":
--> 173 raise KucoinAPIException(response)
174
175 if 'success' in res and not res['success']:
KucoinAPIException: KucoinAPIException 400100: This pair is not provided at present.
本质上,这适用于一个字符串,但是当尝试使用 for 循环和多个字符串进行迭代时,它不起作用。我对 Python 很陌生,但感谢任何支持!
解决方案
如果client.get_kline_data
需要一个字符串,那么你想用参数i
而不是a
在你的循环中调用这个函数。
在您当前的循环中,您没有使用i
, 但是a
,因此您实际上尝试使用整个列表多次调用 API 函数。