【发布时间】:2015-11-09 19:32:41
【问题描述】:
在大多数解释语言中(在伪 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
因为我认为现在它假设我正在尝试创建一个元组。
有什么办法可以将这段代码保留在一行上,还是我必须在将变量传递给函数/方法之前自行初始化变量?据我所知,唯一解决办法是这样的
errs = []
if not f('test', errs):
print str(errs)
【问题讨论】:
标签: python function syntax initialization