【发布时间】:2016-10-28 19:40:31
【问题描述】:
我正在寻找一种将参数的默认值传递给调用函数的好方法。让我通过例子来解释一下:
def greet(name, greeting='Hello', punctuation='!'):
return greeting+' '+name+punctuation
def greet_with_hi(name, punctuation='!'):
return greet(name, 'Hi', punctuation)
这是一个没有使用的示例,但这是我的问题:如何省略 greet_with_hi 的 puncuation 参数的默认值?此参数的默认值已在 greet 中定义。
我能想到的解决方案:
- 让它保持原样,缺点:必须在每个函数定义上更改默认值,而不是只在一个地方更改它
- 使用
None作为默认参数的值并在greet中处理None,缺点:特殊处理 - 使用像
DEFAULT_PUNCTUATION='!'这样的全局“常量”并将其用作默认参数的值,缺点:似乎不是很pythonic
我还没有在 API 和其他代码中看到通用模式。您将如何处理这种模式?
【问题讨论】:
-
您能否添加一个函数的示例用法并解释您期望的输出?
-
你也可以创建一个装饰器,按照你喜欢的方式编排它。
-
@dmitryro:这个例子很简单,我有时不太清楚。构建一个足够灵活的装饰器有点棘手,但也许值得一试
标签: python