我在某处读到,函数应该总是只返回一种类型 所以下面的代码被认为是坏代码:
def x(foo):
if 'bar' in foo:
return (foo, 'bar')
return None
我想更好的解决方案是
def x(foo):
if 'bar' in foo:
return (foo, 'bar')
return ()
返回 None 然后创建一个新的空元组会不会更节省内存,或者这个时间差是否太小以至于即使在较大的项目中也无法注意到?
最佳答案
为什么函数应该返回一致类型的值?满足以下两条规则。
规则 1——一个函数有一个“类型”——输入映射到输出。它必须返回一致类型的结果,否则它不是函数。真是一团糟。
在数学上,我们说某个函数 F 是从域 D 到范围 R 的映射。F: D -> R
。域和范围构成函数的“类型”。输入类型和结果类型对于函数的定义与名称或主体一样重要。
规则 2 - 当您遇到“问题”或无法返回正确结果时,引发异常。
def x(foo):
if 'bar' in foo:
return (foo, 'bar')
raise Exception( "oh, dear me." )
您可以打破上述规则,但长期可维护性和可理解性的成本是天文数字。
“返回 None 不是更节省内存吗?”错误的问题。
重点是不是以清晰、可读、明显的代码为代价来优化内存。
关于python - 为什么函数总是返回相同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839289/