【发布时间】:2019-03-29 02:57:03
【问题描述】:
我想了解何时应该在 Python 2.7 的函数参数中使用可变参数和列表类型
假设我编写了一个处理 URL 列表的函数。我可以用两种不同的方式定义函数:
选项 1:
def process_urls(urls):
if not isinstance(urls, list) or isinstance(urls, tuple):
raise TypeError("urls should be a list or tuple type")
选项2:
def process_urls(*urls):
# urls is guaranteed to be a tuple
选项 2 保证 urls 是一个元组,但可以接受随机数量的位置参数,这些参数可能是垃圾,例如 process_urls(['url1', 'url2'], "this is not a url")
从编程的角度来看,哪个选项更受欢迎?
【问题讨论】:
-
似乎有点基于意见。为什么假设这两种方法中的一种是绝对可取的?
-
第一种解决方案的优点是您可以将迭代器传递给它,这是我看到的唯一区别。在这种特殊情况下,我想我会支持选项 1。
-
如果可能的话,我宁愿使用
process_url(url)并使用标准函数(在本例中为map)来创建批处理。
标签: python