在大多数解释语言中(在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
因为我现在认为它假设我正在尝试创建一个元组。
有没有办法将这些代码保存在一行上,或者我是否必须在将变量传递给函数/方法之前自己初始化变量?从我能说的只有解决方案是这个
errs = []
if not f('test', errs):
print str(errs)
答案 0 :(得分:1)
应将其称为f(name, errors = [])
或f(name, [])
。如果要使用属性名称初始化,python要求您给出的变量键与您在函数定义中声明的任何属性名称相同。
答案 1 :(得分:0)
"在Python中,赋值是一个语句,而不是表达式,并且可以 因此不能在任意表达式中使用。"
请参阅http://effbot.org/pyfaq/why-can-t-i-use-an-assignment-in-an-expression.htm