【发布时间】:2017-09-16 11:50:23
【问题描述】:
我有一个函数
foo(x, setting1=def1, settings2=def2)
(实际上这是一个第三方库函数,有一堆默认参数,我只需要在外部设置1个,但为了举例..)
我打电话给这个
bar(y, settings2_in=def2)
x = get_x(y)
foo(x, settings2=settings2_in)
这没关系,但从风格上讲,我宁愿将参数命名为settings2_insettings2。当我不断向下传递另一层时,我将不得不不断重命名参数,它变得丑陋。
bletch(z, settings2_in_2=def2)
y = get_y(z)
bar(y, settings2_in=settings_in_2)
是否有一种“不错的”/Pythonic 方式以这种方式将默认参数的子集向下传递到多层函数?
如果我这样做,Python 是否足够聪明以解决这个问题:
bar(y, settings2=def2)
x = get_x(y)
foo(x, settings2=settings2)
settings2 的两种用法与上下文不同?
【问题讨论】:
-
我猜只是
bar(y, **kwargs)然后foo(x, **kwargs) -
**kwargs 看起来不错。谢谢!
标签: python nested parameter-passing default