Python 如何将空列表、空dict和布尔值指定为robot framework关键字的默认值。?

Python 如何将空列表、空dict和布尔值指定为robot framework关键字的默认值。?,python,robotframework,Python,Robotframework,我想像python中那样指定默认值 def my_function(arg1="my_string", arg2=[], arg3={}, arg4=True): pass 下面是一个与上面相同的关键字定义示例。我想指定默认值 *** Keywords *** My Function [Arguments] ${ARG1}=my_default_string ${ARG2}= <How to specify empty list) ${ARG3}=

我想像python中那样指定默认值

def my_function(arg1="my_string", arg2=[], arg3={}, arg4=True):
    pass
下面是一个与上面相同的关键字定义示例。我想指定默认值

*** Keywords ***
My Function

    [Arguments]     ${ARG1}=my_default_string    ${ARG2}= <How to specify empty list)    ${ARG3}= <How to specify empty dict)    ${ARG4}= <How to specify boolean true)

    some statements
    some more statements
***关键字***
我的职能

[Arguments]${ARG1}=my_default_string${ARG2}=如您在问题的评论中所述,您可以。在这种情况下,一个常见的习语是这样的:

def my_function(arg1="my_string", arg2=None, arg3=None, arg4=True):
    if arg2 is None:
        arg2 = []
    if arg3 is None:
        arg3 = {}

请注意,
arg1
arg4
没有更改。这是因为它们是不可变的,因此可以正确地用作默认参数。显然,这种方法的一个问题是,函数的用户不容易知道
arg2
arg3
的预期类型,因此您需要确保并包括一个解释预期类型的docstring。

如您问题的注释中所述,您可以。在这种情况下,一个常见的习语是这样的:

def my_function(arg1="my_string", arg2=None, arg3=None, arg4=True):
    if arg2 is None:
        arg2 = []
    if arg3 is None:
        arg3 = {}

请注意,
arg1
arg4
没有更改。这是因为它们是不可变的,因此可以正确地用作默认参数。显然,这种方法的一个问题是,函数的用户不容易知道
arg2
arg3
的预期类型,因此您需要确保并包括一个解释预期类型的文档字符串。

虽然给出的答案很有用,但它并不能真正回答问题,因为问题是如何在Robot框架中实现,而不是在Python中。以下是您在Robot框架中的操作方法:

My Function
    [Arguments]    ${arg1}=my_string    ${arg2}=${None}    ${arg3}=${None}    ${arg4}=${True}

注意,我对参数也使用了小写名称。如果您想遵循最佳实践,您应该对全局变量使用大写变量名,而不是局部变量名或参数变量名。

虽然给出的答案很有用,但它并不能真正回答问题,因为问题是如何在Robot框架中而不是在Python中这样做。以下是您在Robot框架中的操作方法:

My Function
    [Arguments]    ${arg1}=my_string    ${arg2}=${None}    ${arg3}=${None}    ${arg4}=${True}

注意,我对参数也使用了小写名称。如果您想遵循最佳实践,那么应该对全局变量使用大写变量名,而不是局部变量名或参数变量名。

不要将可变项(
[]
{}
作为默认参数。如果您更改它们,将产生奇怪的副作用。不要使用可变参数(
[]
{}
作为默认参数。如果你改变它们,会产生奇怪的副作用。有用的答案会提供有价值的信息,但请注意,这并没有真正回答核心问题,即如何在Robot框架中定义它。谢谢。。我问,如何在Robot框架中定义它。?但你的解释对我来说是新的。。。。。在编写python代码时,我在很多地方都犯了这个错误。有用的答案提供了有价值的信息,但请注意,这并没有真正回答核心问题,即如何在Robot框架中定义它。谢谢。。我问,如何在Robot框架中定义它。?但你的解释对我来说是新的。。。。。我在编写python代码时在很多地方都犯了这个错误。谢谢,这就是我要找的。。。我使用下面的代码将其设置为空列表(如果没有)${value}=Run关键字如果${value}是${None}创建字典。。。ELSE设置变量${value}谢谢,这就是我要找的。。。我使用下面的代码将其设置为空列表(如果没有)${value}=Run关键字如果${value}是${None}创建字典。。。ELSE设置变量${value}