未使用但需要 Fast API 参数的弱警告
Weak warning for a parameter not used but needed with Fast API
我将自定义异常处理程序与 Fast API:
class CustomException(Exception):
def __init__(self, err_message: str):
self.err_message = err_message
@app.exception_handler(CustomException)
async def custom_exception_handler(request: Request, exc: CustomException):
return JSONResponse(content={"error": exc.err_message})
Pycharm 将 'request: Request' 作为弱警告:
''Parameter 'request' value is not used'' since it's not used in the code.
但是,如果我删除参数,我会在 运行 代码时收到快速 API 错误。
所以我想知道这是不是 PyCharm 'bug',我们可以这样称呼它吗?
长话短说:
您使用 _
作为名称或前缀的替换
答案:
因为您没有按照评论中的建议禁用警告,所以禁用警告被认为是一种不好的做法,因为它们的存在是有原因的。更好的方法是进行一些根本原因分析,通过谷歌搜索原因来理解警告,并找到适当的代码更改来删除它。
通常在使用 linters 时,有时可能会认为除了弹出另一个警告或建议之外没有其他方法可以修复警告或建议。但是你已经到了那里:你必须选择一种解决方案来增强代码的可读性和可维护性,而不会破坏任何更多规则或实际软件
一般来说 python 中有一些方法需要参数,即使您不使用它们也是如此,因为使用它们的上述基础设施期望接收具有特定签名模板的方法。例如,在定义无服务器 lambda 函数时,它应该有一个 event
和一个 context
,但你也可能在传入事件或要使用的执行上下文中没有任何相关信息。
You have to learn how to discard parameters while keeping them. For that you use the _
as a replacement of the name or a prefix
def lambda_example(event, context):
"""This raises a warning ⚠️"""
print(event)
def second_example(event,_):
"""This does not ✔️"""
print(event)
def third_example(_event,_context):
"""This does not either ✔️"""
print("this does not care about it's parameters")
我将自定义异常处理程序与 Fast API:
class CustomException(Exception):
def __init__(self, err_message: str):
self.err_message = err_message
@app.exception_handler(CustomException)
async def custom_exception_handler(request: Request, exc: CustomException):
return JSONResponse(content={"error": exc.err_message})
Pycharm 将 'request: Request' 作为弱警告:
''Parameter 'request' value is not used'' since it's not used in the code.
但是,如果我删除参数,我会在 运行 代码时收到快速 API 错误。 所以我想知道这是不是 PyCharm 'bug',我们可以这样称呼它吗?
长话短说:
您使用 _
作为名称或前缀的替换
答案:
因为您没有按照评论中的建议禁用警告,所以禁用警告被认为是一种不好的做法,因为它们的存在是有原因的。更好的方法是进行一些根本原因分析,通过谷歌搜索原因来理解警告,并找到适当的代码更改来删除它。
通常在使用 linters 时,有时可能会认为除了弹出另一个警告或建议之外没有其他方法可以修复警告或建议。但是你已经到了那里:你必须选择一种解决方案来增强代码的可读性和可维护性,而不会破坏任何更多规则或实际软件
一般来说 python 中有一些方法需要参数,即使您不使用它们也是如此,因为使用它们的上述基础设施期望接收具有特定签名模板的方法。例如,在定义无服务器 lambda 函数时,它应该有一个 event
和一个 context
,但你也可能在传入事件或要使用的执行上下文中没有任何相关信息。
You have to learn how to discard parameters while keeping them. For that you use the
_
as a replacement of the name or a prefix
def lambda_example(event, context):
"""This raises a warning ⚠️"""
print(event)
def second_example(event,_):
"""This does not ✔️"""
print(event)
def third_example(_event,_context):
"""This does not either ✔️"""
print("this does not care about it's parameters")