如果一个Python函数根据提供的参数返回不同的类型,这是否是良好的代码风格?
def foo(bar):
if bar is None:
return None
elif bar == 1:
return 1*1
else:
return [b*b for b in bar]
foo
会在bar为None时返回None
foo
会在bar == 1
时返回1
foo
会在bar为整数的元组/列表时返回一个int
列表
例子:
>> foo(None)
None
>> foo(1)
1
>> foo(1, 2, 3, 4)
[1, 4, 9, 16]
返回None
或int
应该是可以的,但是基于函数参数返回int
或int
列表是否可以呢?你可能会认为这是可以的,因为用户知道期望的返回类型并且不需要进行类型检查(在这种情况下我会说这是不可以的),但是也有人认为最好将该函数拆分成两个函数,一个期望int
并返回int
,另一个期望int
列表并返回int
列表。
json.loads(x)
的返回值类型取决于x
的值。 - Eric