xis*_*xis 71 python lambda closures
对于以下代码:
for sort_key, order in query_data['sort']:
results.sort(key=lambda k: get_from_dot_path(k, sort_key),
reverse=(order == -1))
Run Code Online (Sandbox Code Playgroud)
Pylint报告错误:
循环中定义的单元变量sort_key(cell-var-from-loop)
任何人都可以暗示这里发生了什么吗?从pylint源代码描述是:
闭包中使用的变量在循环中定义.这将导致所有闭包对闭合变量使用相同的值.
但我不知道这意味着什么.谁能举一个这个问题的例子?
che*_*ner 80
当函数被实际调用时,将查找sort_key
正文中的名称lambda
,因此它将看到sort_key
最近有什么值.由于您正在sort
立即调用,因此sort_key
在使用生成的函数对象之前,值不会更改,因此您可以安全地忽略该警告.要使其静音,您可以将sort_key
参数的默认值设置为lambda
:
results.sort(key=lambda k, sk=sort_key: get_from_dot_path(k, sk),
reverse=(order == -1))
Run Code Online (Sandbox Code Playgroud)
mjo*_*ngr 13
import functools
results.sort(key=functools.partial(get_from_dot_path, foo=sort_key),
reverse=(order == -1))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15912 次 |
最近记录: |