gpt4 book ai didi

python - python 函数的返回类型不一致——真的吗?

转载 作者:太空狗 更新时间:2023-10-30 01:38:04 25 4
gpt4 key购买 nike

我是 Python 新手,但不是编程新手。为了学习 Python,我正在学习在线入门教程。我研究过多个函数示例,这些函数根据参数返回不一致类型的结果。例如,结果可能是整数或 bool 值,如本例中的 by_three() 所示:

def cube(number):
return number**3

def by_three(number):
if (number%3) == 0:
return cube(number)
else:
return False

这向我发出了危险信号。这是 Python 世界可接受的做法吗?明明语言允许,可以做,但是应该做吗?

最佳答案

我花了一些时间思考为什么 python “允许”不一致的返回类型,并意识到它不仅仅是 python,几乎任何 OO 语言都是如此。

在 python 中,一切都是对象,甚至类定义也是对象。据我所知,唯一不是对象的是 type() 函数。

因此我们现在可以假设所有类型都有一个最顶层的父类(super class)型,所有其他类型都继承自该父类(super class)型。类似于 Java 中的 Object。这让我想到了这个假设的 Java 代码示例,其中您有一个服务层查询具有特定姓氏的用户的存储库

Object getUsersByLastname(String lastname) {
List<User> users = repository.getUsersByLastname(lastname);
if (user.size() == 1) {
return users.get(0);
} else {
return users;
}
}

任何曾经使用过 Java 的人都会认为这是一段非常糟糕的代码。无论调用什么,都必须在继续之前进行类型检查。

我的观点是,上面显示的 Python 示例也是糟糕的代码,您将以维护噩梦告终。归根结底,好的设计是易于维护的,不需要大量的 if...else... 语句即可工作。无论如何,它肯定感觉它违反了 SOLID 中的打开/关闭原则,因为在任何时候都可以将另一个返回类型添加到该函数,并且需要修改调用代码。

仅仅因为你可以做某事并不意味着你应该做。

关于python - python 函数的返回类型不一致——真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com