为动态参数提供默认值,而无需访问原始变量使用代码

时间:2017-08-03 15:51:56

标签: python python-3.x

因此,当您提供错误的变量名称时,这是默认行为:

>>> foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> 

我正在寻找的是:

>>> set_name_error_handling('assign_default',None)
>>> foo
>>>

foo自动分配无)

我在动态参数处理上使用它,并且想要使用一种行为,如果没有给出参数,则使用默认值。我有一些我无法控制的代码使用None处理。我可以只添加一些像下面这样的动态标题,并通过不更改所有其他代码来保存它们吗?

# This may work in python2 but not python3
def foo(self,params):
    local = locals()
    for key in params:
        local[key] = params[key]
    # Do important things onwards, cannot change

编辑:一种解决上述特定问题的方法是提供一个默认选项,让我们说:

options = foo.get_default_params()
# do whatsoever changes to modify options
result = foo.call(options)

这假定默认参数表可用。如果你甚至没有默认参数表,或者无法生成一个(无限可能的参数,如print()),它仍然可行吗?

编辑:要将问题集中到方法中,我已经重新标记了标题并删除了引用以覆盖NameError。

1 个答案:

答案 0 :(得分:0)

我不认为Python提供类似的东西。但是,您可以随时执行:

ObjLoanIncreaseRequest

如果你试图定义一个函数,我会这样定义:

try:
    foo
except NameError:
    foo = None

# do whatever with foo

您可以将其称为def baz_func(foo=None): # function body here baz_func()