CodeQL 文档

不必要的 lambda

ID: py/unnecessary-lambda
Kind: problem
Security severity: 
Severity: recommendation
Precision: high
Tags:
   - maintainability
   - useless-code
Query suites:
   - python-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

一个不修改任何参数的 lambda 调用函数是不必要的。Python 函数是一等公民,可以像生成的 lambda 一样传递。

建议

移除 lambda,直接使用函数。

示例

在这个示例中,为了将方法作为参数传递给 call_with_x_squared,不必要地使用了 lambda。

import math

def call_with_x_squared(x, function):
    x = x*x
    return function(x)

print call_with_x_squared(2, lambda x: math.factorial(x))

这并非必要,因为方法可以直接传递。它们的行为类似于可调用对象。

import math

def call_with_x_squared(x, function):
    x = x*x
    return function(x)

print call_with_x_squared(2, math.factorial)

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私