Python,如何在 function/method 调用期间初始化变量

Python, how can I initialize a variable during function/method calls

在大多数解释性语言中(在 psuedo PHP 中给出的例子)我可以做这样的事情

function f($name, &$errors = null) {
    if(something_wrong) {
        if(!is_null($errors) {
            $errors[] = 'some error';
        }
        return false;
    }
}

if(!f('test', $errs = array()) {
    print_r($errs);
}

得到类似

的结果
Array
(
     [0] => some error
)

但是当我在 Python

中尝试这个时
def f(name, errors = None):
    if something_wrong:
        if errors:
            errors.append('some error')
        return False


if not f('test', errs = []):
    print str(errs)

我收到一个错误

TypeError: f() got an unexpected keyword argument 'errs'

在 Python 认为我正在尝试设置特定参数而不是完全创建新变量的情况下,这非常有意义。

但是如果我尝试

if not f('test', (errs = [])):
    print str(errs)

我明白了

    f('test', (errs = []))
                    ^
 SyntaxError: invalid syntax

因为我认为现在它假设我正在尝试创建一个元组。

有什么方法可以将此代码保留在一行中,还是我绝对必须在将变量传递给 function/method 之前自行初始化变量?据我所知,唯一的解决方案是这个

errs = []
if not f('test', errs):
    print str(errs)

应该叫作f(name, errors = [])f(name, [])。如果你想用属性名初始化,python 要求你给的变量键与你在函数定义中声明的任何属性名相同。

"In Python, assignment is a statement, not an expression, and can therefore not be used inside an arbitrary expression."

http://effbot.org/pyfaq/why-can-t-i-use-an-assignment-in-an-expression.htm