Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数,其中一个参数是外部的(如果提到),或者是内部的(如果没有提到)_Python - Fatal编程技术网

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

python函数,其中一个参数是外部的(如果提到),或者是内部的(如果没有提到),python,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的解 我该怎么做呢?只要写 def func(a, b

我想定义一个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的解

我该怎么做呢?

只要写

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

您正在描述一个默认参数。Python为您做到了这一点:

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

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

问题是,在我的例子中,通过打开一个文件并处理其中的数据,可以在函数中生成b。因此,我更喜欢这样的说法:如果b被声明到函数调用中,而不是使用它,否则请执行此任务并从insideSide生成b注意:永远不要使用裸函数,除非:。将要捕获的异常指定为:exception ValueError或exception NameError等。否则,您将阻止所有内容,包括中断信号或内存错误之类的内容,因为您实际上无法处理它们,因此您永远不应该捕获这些内容。
def func(a, b=None):
    if b is None:
        b = []
    b.append(a)
    return b