missing-f-string-syntax (RUF027)
修复总是可用的。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
搜索看起来像是要用作 f-string,但缺少 f
前缀的字符串。
为什么这不好?
只有当字符串具有 f
前缀时,花括号内的表达式才会被求值。
详情
尽管包含类似 f-string 的语法,但仍然有很多可能的字符串字面量并非旨在用作 f-string。 因此,此 lint 会忽略所有满足以下条件之一的字符串:
- 该字符串是一个独立的表达式。 例如,该规则会忽略所有文档字符串。
- 该字符串是函数调用的一部分,其参数名称与至少一个变量匹配(例如:
format("Message: {value}", value="Hello World")
) - 该字符串(或字符串的父表达式)对其具有直接方法调用(例如:
"{value}".format(...)
) - 该字符串没有
{...}
表达式部分,或使用了无效的 f-string 语法。 - 该字符串引用了不在作用域内的变量,或者根本没有捕获任何变量。
- 潜在 f-string 中的任何格式说明符都无效。
- 该字符串是已知期望模板字符串而不是已求值的 f-string 的函数调用的一部分:例如,
logging
调用,gettext
调用,或 FastAPI 路径。
示例
建议改为
修复安全性
此修复程序将始终更改程序的行为,并且尽管有上述详细说明的预防措施,但这可能是不可取的。 因此,该修复程序始终标记为不安全。