2024-04-26 20:55:13 发布
网友
我有一个返回列表或元组的方法。在参数中表示返回类型的最python方法是什么?
def names(self, section, as_type=()): return type(as_type)(([m[0] for m in self.items(section)]))
无论来电者想要什么,大部分时间都要返回。如果他们希望能够排序、删除或删除项目等,请使用列表。如果他们想用它作为字典键,就用元组。如果主要用途是迭代,则返回一个迭代器。如果对调用者来说这并不重要,也不会比您想象的更频繁,那么返回使代码最简单的内容。通常这是一个列表或迭代器。
不要提供将输出转换为给定类型的方法。Python已经有了一个非常简单的方法来实现这一点,任何使用您的函数的程序员都会熟悉它。看看标准的Python库。这些例行程序中有没有这样做?不,因为没有理由。
异常:有时有一种方法可以获得迭代器或列表,即使将迭代器转换为列表很容易。通常,此功能是作为两个独立的函数或方法提供的。有时您可能希望遵循这一点,特别是如果您可以使用不同的算法实现这两个备选方案,从而为需要一个或另一个的呼叫者提供一些明显的好处。
Python式的方式是根本不关心类型。返回一个元组,如果调用函数需要一个列表,那么让它对结果调用list()。反之亦然,以更合理的默认类型为准。
list()
更好的是,让它返回一个生成器表达式:
def names(self, section): return (m[0] for m in self.items(section))
现在,调用者得到一个iterable,该iterable被惰性地计算。然后,他可以决定对其进行迭代:
for name in obj.names(section): ...
或者从头开始创建一个列表或元组-他从不需要将现有列表更改为元组,反之亦然,因此这在所有情况下都是有效的:
mylist = list(obj.names(section)) mytuple = tuple(obj.names(section))
保持简单:
def names(self, section): """Returns a list of names.""" return [m[0] for m in self.items(section)]
如果调用者想要一个元组而不是一个列表,他会这样做:
names = tuple(obj.names(section))
无论来电者想要什么,大部分时间都要返回。如果他们希望能够排序、删除或删除项目等,请使用列表。如果他们想用它作为字典键,就用元组。如果主要用途是迭代,则返回一个迭代器。如果对调用者来说这并不重要,也不会比您想象的更频繁,那么返回使代码最简单的内容。通常这是一个列表或迭代器。
不要提供将输出转换为给定类型的方法。Python已经有了一个非常简单的方法来实现这一点,任何使用您的函数的程序员都会熟悉它。看看标准的Python库。这些例行程序中有没有这样做?不,因为没有理由。
异常:有时有一种方法可以获得迭代器或列表,即使将迭代器转换为列表很容易。通常,此功能是作为两个独立的函数或方法提供的。有时您可能希望遵循这一点,特别是如果您可以使用不同的算法实现这两个备选方案,从而为需要一个或另一个的呼叫者提供一些明显的好处。
Python式的方式是根本不关心类型。返回一个元组,如果调用函数需要一个列表,那么让它对结果调用
list()
。反之亦然,以更合理的默认类型为准。更好的是,让它返回一个生成器表达式:
现在,调用者得到一个iterable,该iterable被惰性地计算。然后,他可以决定对其进行迭代:
或者从头开始创建一个列表或元组-他从不需要将现有列表更改为元组,反之亦然,因此这在所有情况下都是有效的:
保持简单:
如果调用者想要一个元组而不是一个列表,他会这样做:
相关问题 更多 >
编程相关推荐