在Python中将一个可变对象设置为函数中参数的默认值是一个常见的错误.以下是David Goodger撰写的优秀文章中的一个例子:
>>> def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
Run Code Online (Sandbox Code Playgroud)
之所以出现这种情况的解释是在这里.
现在我的问题是:这个语法有一个很好的用例吗?
我的意思是,如果遇到它的每个人都犯了同样的错误,调试它,理解问题,从而试图避免它,这种语法有什么用?
嗨,我有一个两个字典的列表,我将传递给Django模板:
base_parts = [
{'important item': 43},
{'lesser item': 22, 'lesser item': 3, 'lesser item': 45}
]
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我可以这样做:
{% for base_part in base_parts %}
{% for k, v in base_part.items %}
{# ...do stuff #}
{# I try to get a running total of items to use as an ID #}
inner ID: {% forloop.counter0 %}< br/>
outer ID: {% forloop.parentloop.counter0 %}< br/>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我想要的是我迭代完成的项目总数的运行总计,但我包含的两种方法都包含返回重复项.我知道我可以连接循环,但我使用的是一个formset,并且真的希望id被索引为0,1,2 ......等等.
有没有办法在模板中实现这种类型的计数?
任何帮助非常感谢.
编辑
目前的输出看起来像:
outerID: 0<br />
innerID: 0<br …Run Code Online (Sandbox Code Playgroud)