2017-10-18 38 views
0

我想像在python如何指定空列表,空dict和布尔值作为机器人框架关键字的默认值。

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 
+1

不要在你的情况下使用mutables('[]'和'{}')作为默认参数。如果你改变它,它会有一个奇怪的副作用。 –

回答

1

虽然给出的答案很有用,但它并没有真正回答这个问题,因为问题是在Robot Framework中如何处理,而不是在Python中。这里是你会怎么做,在机器人框架:

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

通知我用小写的名称为您ARGS为好。如果你想遵循最佳实践,你应该使用大写变量名称作为全局变量,而不是局部变量名称或变量名称。

+0

谢谢,这是我正在寻找... 我使用下面的代码,使其成为一个空列表,如果没有。 $ {value} =运行关键字如果$ {value}是$ {None}创建字典 ... ELSE设置变量$ {value} – Jomin

4

正如你的问题的评论中提到的那样,你do not want to use mutable default values。在这种情况下,一个常见的成语是像这样:

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

注意arg1arg4没有改变。这是因为它们是IMMUTABLE,因此可以用作默认参数。显然,这种方法的一个问题是,你的函数的用户不知道arg2arg3的期望类型是什么,所以你需要确定并包含一个解释预期类型的​​文档字符串。

+0

提供有价值信息的有用答案,但请注意,这并不真正回答核心问题,即如何在Robot Framework中定义此问题。 – Verv

+0

Woah,甚至没有接受,谢谢! – MrName

+0

谢谢..我问,如何在Robot框架中定义这个。? 但是你解释的是我的新东西..... 我在编写python代码的时候在很多地方犯了这个错误。 – Jomin