所以我用这个方法从文本文件中设置参数:
def set_params(self, params, previous_response=None):
if len(params) > 0:
param_value_list = params.split('&')
self.params = {
param_value.split()[0]: json.loads(previous_response.decode())[param_value.split()[1]] if
param_value.split()[0] == 'o' and previous_response else param_value.split()[1]
for param_value in param_value_list
}
当我这样称呼这个方法时:
apiRequest.set_params("lim 5 & status active")
//now self.params={"lim" : 5, "status" : "active"}
效果很好。现在我希望能够多次添加相同的参数,当发生这种情况时,将param设置为列表:
apiRequest.set_params("lim 5 & status active & status = other")
//I want this: self.params={"lim" : 5, "status" : ["active", "other"]}
如何精美地修改此方法?我能想到的只是有点难看...我是python的新手
答案 0 :(得分:1)
尽可能简单直接地写出来。这通常是最好的方法。在下面的代码中,我对您的要求进行了一处更改:所有值都是列表,有些可能只有列表中的一个元素。
在这种方法中,我应用以下选择和技巧:
value
setdefault()
获取当前值列表(如果存在),或者设置新的空列表对象(如果不存在)def set_params(self, params, previous_response=None):
if len(params) <= 0:
return
previous_data = json.loads(previous_response.decode())
self.params = {}
for param_value in params.split('&'):
key, value = param_value.split()
if key == 'o' and previous_response:
value = previous_data[value]
values = self.params.setdefault(key, [])
values.append(value)
# end set_params()
调试是第一次编写代码的两倍。 因此,如果您尽可能巧妙地编写代码,那么您就是 定义,不够聪明,不能调试它。
— Brian W. Kernighan and P. J. Plauger in The Elements of Programming Style.