修正API调用的** params参数的语法

时间:2018-02-28 16:01:53

标签: python kwargs

我正在尝试使用python-binance包装到Binance API来编写一个简单的小交易机器人,主要是为了学习如何。我目前无法使用client.get_symbol_ticker()函数来获取特定交易对的价格,可以在第827行找到here

我需要发送的字符串格式为"AAABBB",其中AAA是第一个股票代码,BBB是我想要AAA价格的符号。但是,我没有正确的语法。当我传入一个字符串时:

client.get_symbol_ticker('ETHBTC')

我得到TypeError: get_symbol_ticker() takes exactly 1 argument (2 given)

如果我这样做

client.get_symbol_ticker(params = 'ETHBTC')

我得到BinanceAPIException: APIError(code=-1104): Not all sent parameters were read; read '0' parameter(s) but was sent '1'.

显然,我只是错误地调用了这个调用的语法。函数原型如下所示:

 def get_symbol_ticker(self, **params):
    """Latest price for a symbol or symbols.
    https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#24hr-ticker-price-change-statistics
    :param symbol:
    :type symbol: str

有人能告诉我调用此函数时使用的正确语法吗?

1 个答案:

答案 0 :(得分:3)

您的电话应为client.get_symbol_ticker(symbol = 'ETHBTC')。了解这一点的唯一方法是查看文档字符串:

:param symbol:
:type symbol: str

这告诉您它需要一个名为symbol的关键字参数。

**params表示“获取所有关键字参数并将其作为变量params中的字典返回”。因此,对于上面提供的方法调用,params将是:

{'symbol': 'ETHBTC'}