我编写了两个共享相同模式的示例代码。你知道吗
正如您在下面看到的,我使用if语句在参数为None时不将关键字参数向下传递给子函数。 我想用更好的方式来做。你知道吗
如果你有想法,请分享你的想法。你知道吗
# example_1
def mysort(alist, key=None):
if key is None:
alist = sorted(alist)
else:
alist = sorted(alist, key=key)
return alist
# example_2
def create_index(index_name, mapping=None):
es = Elasticsearch()
if mapping in None:
response = es.indices.create(index=index_name)
else:
response = es.indices.create(index=index_name, body=mapping)
return respone
函数^{} 的参数
key
的默认值是None
。因此,您的第一个if
/else
是不必要的。简单使用使用
es.indices.create
的body
的默认值作为函数create_index
中mapping
的默认值。然后您也可以去掉这个函数中的if
/else
。你知道吗编辑:该documentation表示:
尝试找出这是一个JSON字符串还是一个表示文档的Python字典。在JSON字符串的情况下,使用字符串
"{}"
作为默认值:编辑2:使用空的dict将不起作用(请参见注释中的链接)。所以在第二种情况下,您必须使用
if
/else
。你知道吗对于第一个示例,
key
的默认值是None
,因此您可以直接传递它:也可以设置不同的默认值。例如,
123
的新默认值将传递给sorted
。你知道吗如前所述,对于sorted,您基本上只是打包原始函数。对于第二个例子,我不认为可以避免使用
if
,但是可以稍微缩短一下。你知道吗相关问题 更多 >
编程相关推荐