【发布时间】:2016-02-19 22:33:46
【问题描述】:
我的问题是关于如何定义一个可以是不同类型(多态)的可选参数。
我试图在 python 3.x 中围绕functools.reduce 定义一个包装器,并注意到有一个可选参数,[initializer]。我试图定义相同的可选参数,但不知道如何。 Search around 表明我通常可以执行以下操作:
def info(object, spacing=10, collapse=1):
但在这种情况下,initializer 可以是具有不同默认值的许多不同类型。例如,它可以是0 用于添加(作为reduce 函数)和""(空字符串)用于字符串连接。这个参数应该怎么定义?
【问题讨论】:
-
在 Python 中期望和处理不同类型的参数并不罕见(但通常是不明智的),例如
if type(var) is str: do_stuff. -
It's not uncommon (but generally ill-advised) to expect and handle different types of argument in Python@zamuz 好的。但这是标准的python库函数(reduce)。 -
您能说明一下您要达到的目标吗?参数类型在运行时确定(即您从不定义参数类型)。查看实际结果与预期结果会很有帮助
-
@tinlyx:
functools.reduce的pydoc有reduce(function, sequence[, initial]) -> value,其中[, initial]在计算中“放在序列的项目之前,当序列为空时作为默认值。 "initial的类型不会根据自己的内容/类型修改/控制reduce的行为。 -
@ProfHase85 与 OP 一样,我正在尝试提供 reduce 函数的包装器。
标签: python python-3.x optional-parameters