小编典典

Python中的函数重载:缺少

python

就像这样说:

http://web.archive.org/web/20090624083829/http://mail.python.org/pipermail/python-
list/2003-May/206149.html

Python中不存在函数重载。

就我而言,这也是一种面向对象的语言,因此对我来说是一个很大的障碍。最初,我发现无法区分参数类型很困难,但是Python的动态特性使其变得容易(例如,列表,元组,字符串非常相似)。

但是,计算传递的参数数量然后完成工作就像一个过大的杀伤力。


阅读 160

收藏
2020-12-20

共1个答案

小编典典

如要注意的那样,具有默认值的关键字参数可以有很长的路要走。

我还要指出,在我看来,担心很多类型传递给方法的做法违背了Python的精神。在Python中,我认为使用鸭子类型更被接受-
询问对象可以做什么,而不是对象可以做什么。

因此,如果您的方法可以接受字符串或元组,则可以执行以下操作:

def print_names(names):
    """Takes a space-delimited string or an iterable"""
    try:
        for name in names.split(): # string case
            print name
    except AttributeError:
        for name in names:
            print name

然后,您可以执行以下任一操作:

print_names("Ryan Billy")
print_names(("Ryan", "Billy"))

尽管类似的API有时表明存在设计问题。

2020-12-20