我对 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'
Run Code Online (Sandbox Code Playgroud)
但是当我打电话时
client.get_order_book(x)
Run Code Online (Sandbox Code Playgroud)
它得出错误:
类型错误: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))
Run Code Online (Sandbox Code Playgroud)
我读了很多关于self,但我不明白,它必须在哪里以及如何在这里使用?!
x是文字 string symbol='ETHBTC',而不是“保存的”关键字参数。您尝试拨打的电话相当于
client.get_order_book("symbol='ETHBTC'"),
Run Code Online (Sandbox Code Playgroud)
但此方法不接受任何位置参数(除了self)。这是签名:
def get_order_book(self, **params):
Run Code Online (Sandbox Code Playgroud)
预先打包关键字参数并模拟
client.get_order_book(symbol='ETHBTC')
Run Code Online (Sandbox Code Playgroud)
您需要 adict来封装关键字参数。
x = {'symbol': 'ETHBTC'}
client.get_order_book(**x)
Run Code Online (Sandbox Code Playgroud)