繁体   English   中英

在 python 的字典中将默认关键字值定义为 function

[英]Defining default keyword values to function in a dictionary in python

我正在写一个需要很多关键字的 function。

我有一本很长的字典,其中包含许多已经存在于我的代码中并且正在其他地方使用的关键字。 例如

{'setting1':None, 'setting2': None....}

我想知道有没有一种方法,当我定义我的 function 时,我可以将所有这些设置为关键字,而不必像这样再次输入它们:

def my_function(setting1=None, setting2=None, **kwargs)

需要明确的是,基本上我想将字典的所有内容设置为默认值为 None 的关键字,当我调用 function 时,我应该能够更改它们的值。 所以我不打算在调用 function 时将字典作为 kwargs 提供。

虽然不完全相同,但我通常更喜欢将 arguments 保存在**kwargs中并使用.get()获取值或None

def my_function(**kwargs):
     do_something(kwargs.get("alpha"), kwargs.get("beta"))

如果键存在,则字典上的.get()返回值,或者None一个键不存在。 如果愿意,您可以选择指定不同的默认值作为第二个参数。

创建 function 时,您需要实现 arguments 的使用方式。 通过自动创建 arguments 您最终会添加 arguments 并忘记为它们实现行为。

# Manually defined.
def func(a, b, c, d):
    return a + b / c * d

# Auto-defined - Human error.
def func(""" auto define a,b,c,d,e,f,g,h """):
    return a + b / c * d # <- you only use half of the arguments. Confusing at best.

# Auto-defined - Inputs unclear, code is not explicit.
def func(defind_my_args):
    return a + b / c * d 

如果您需要重用“代码行为”到可以“继承”参数的程度,也许您应该改用 object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM