【发布时间】:2012-04-26 16:56:21
【问题描述】:
缺乏维护动态类型代码的经验,我正在寻找处理这种情况的最佳方法:
(python中的示例,但可以使用任何动态类型语言)
def some_function(object_that_could_be_a_list):
if isinstance(object_that_could_be_a_list, list):
for element in object_that_could_be_a_list:
some_function(element)
else:
# Do stuff that expects the object to have certain properties
# a list would not have
我对此感到非常不安,因为我认为一个方法应该只做一件事,而且我认为它没有应有的可读性。所以,我很想创建三个函数:第一个函数将获取任何对象并在其他两个函数之间“排序”,一个用于列表,另一个用于“简单”对象。话又说回来,这会增加一些复杂性。
这里最“可持续”的解决方案是什么,并且保证易于维护的解决方案是什么?对于那些我不知道的情况,python 中有没有成语?提前致谢。
【问题讨论】:
-
Python 是动态类型的,而不是弱类型的。
-
什么是
some_function?在许多情况下,它可以像简单对象一样应用于列表。 -
@IgnacioVazquez-Abrams:哎呀!已更正。
-
确实,这在很大程度上取决于
some_function的作用。 -
好吧,那么如果你控制双方,要求参数是一个序列是不是不合理?
标签: python list coding-style dynamic-typing