python函数,其中如果提到参数是外部的,或者如果没有提到则参数是内部的

时间:2016-04-10 11:53:53

标签: python

我想定义一个Python函数,如果在调用函数时声明了参数,那么参数是外部的,如果函数调用中没有提到它,则它是内部参数。 一个简单的例子将澄清我的问题:

def func(a, b):
    c = 4
    try:
        b
    except:
        b= c
    return a + b

现在我想要一些我可以写的东西

func(2, 1)

并提供结果(2 + 1 = 3),我甚至可以写

func(2)

并且该函数将生成一个c + a = 6的解决方案。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您正在描述默认参数。 Python为您做到了这一点(see the docs):

def func(a, b=4):
    return a + b

或者,如果涉及更多逻辑,您可能需要考虑:

def func(a, b=None):
    if b is None:
        try:
            b = fancy_function()
        except FancyException:
            b = 4
    return a + b

同样适用于可变的默认值:

def func(a, b=None):
    if b is None:
        b = []
    b.append(a)
    return b

答案 1 :(得分:2)

简单写一下

def func(a, b=4):
    return a + b

>>> func(2)
6
>>> func(2, 1)
3

如果事先不知道默认值b,您可以执行以下操作:

def func(a, b=None):
    if b is None:
        b = some_function_that_generates_b()
    return a + b