位置参数跟随关键字参数

Ard*_*ies 9 python

我在python中调用这样的函数.

order_id = kite.order_place(self, exchange, tradingsymbol, 
transaction_type, quantity, price, product, order_type, validity, 
disclosed_quantity=None, trigger_price=None, squareoff_value, 
stoploss_value, trailing_stoploss, variety, tag='')
Run Code Online (Sandbox Code Playgroud)

这是函数文档中的代码..

def order_place(self, exchange, tradingsymbol, transaction_type, 
quantity, price=None, product=None, order_type=None, validity=None, 
disclosed_quantity=None, trigger_price=None, squareoff_value=None, 
stoploss_value=None, trailing_stoploss=None, variety='regular', tag='')
Run Code Online (Sandbox Code Playgroud)

它给出了这样的错误..

在此输入图像描述

如何解决此错误?谢谢 !

agh*_*ast 16

语言语法指定位置参数出现在调用中的关键字或星号参数之前:

argument_list        ::=  positional_arguments ["," starred_and_keywords]
                            ["," keywords_arguments]
                          | starred_and_keywords ["," keywords_arguments]
                          | keywords_arguments
Run Code Online (Sandbox Code Playgroud)

具体来说,关键字参数如下所示:tag='insider trading!' 虽然位置参数如下所示:..., exchange, ....问题在于您似乎已复制/粘贴参数列表,并保留了一些默认值,这使它们看起来像关键字参数而不是位置参数.这很好,除了你然后回到使用位置参数,这是一个语法错误.

此外,当参数具有默认值时,例如price=None,这意味着您不必提供它.如果您不提供它,它将使用默认值.

要解决此错误,请将以后的位置参数转换为关键字参数,或者,如果它们具有默认值而您不需要使用它们,则根本不要指定它们:

order_id = kite.order_place(self, exchange, tradingsymbol,
    transaction_type, quantity)

# Fully positional:
order_id = kite.order_place(self, exchange, tradingsymbol, transaction_type, quantity, price, product, order_type, validity, disclosed_quantity, trigger_price, squareoff_value, stoploss_value, trailing_stoploss, variety, tag)

# Some positional, some keyword (all keywords at end):

order_id = kite.order_place(self, exchange, tradingsymbol,
    transaction_type, quantity, tag='insider trading!')
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,@Ardour Technologies 请将其标记为正确,以总结他所说的内容 - 您可以像这样指定参数: `function1("arg1", "arg2", "arg3")` 或者您可以像这样指定它们所以: `function1(arg3="arg3", arg1="arg1", arg2="arg2"` (假设每个参数都是可选的) (3认同)