首页 > 解决方案 > 接受 1 个位置参数,但给出了 2 个;组合字符串作为参数

问题描述

我对python很陌生,即使在搜索inet之后,我也不明白这里出了什么问题。为了使用 Binance API,我需要这样的命令:client.get_order_book(symbol = 'ETHBTC')

由于符号是动态的,我尝试了

x1 = 'symbol = '
x2 = symbols[0].get('symbol')       #Output: ETHBTC
x = x1 + "'" + x2 + "'"
print(x)                            #Output: symbol = 'ETHBTC'

但是当我打电话时

client.get_order_book(x)

它得出错误:

TypeError: get_order_book() 接受 1 个位置参数,但给出了 2 个

这是代码的其余部分:

client = Client(api_key, api_secret)

symbols = client.get_ticker()
print(symbols[0].get('symbol'))  #Output ETHBTC

y = len(symbols)
for i in range(y):
    x1 = 'symbol = '
    x2 = symbols[i].get('symbol')
    x = x1 + "'" + x2 + "'"
    print(x)  #Output: symbol = 'ETHBTC'
    print(client.get_order_book(x))

我读了很多关于self,但我不明白,在这里必须在哪里以及如何使用它?!

标签: pythonbinance

解决方案


x是文字 string symbol='ETHBTC',而不是“保存”的关键字参数。您尝试的呼叫相当于

client.get_order_book("symbol='ETHBTC'"),

但此方法不接受任何位置参数(除了self)。这是签名

def get_order_book(self, **params):

预打包关键字参数并模拟

client.get_order_book(symbol='ETHBTC')

你需要一个dict封装关键字参数。

x = {'symbol': 'ETHBTC'}
client.get_order_book(**x)

推荐阅读