如何解决Python 代码风格:有没有办法配置 linter 将参数拆分成多行?
目前我正在使用 Django 3.1.4 处理 Python 3.8 项目,我希望以以下方式强制执行代码样式:
将可迭代对象拆分为多行,将括号与其内容放在不同的行中。例如:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql","NAME": os.getenv("DATABASE_NAME","my_db"),...
"PORT": os.getenv("DATABASE_PORT","5432"),}
}
...
CHOICES = (
(LOCATION,"Location"),(INTEREST,"Interest"),(CULTURE,"Culture"),)
将函数签名参数拆分成多行,其中它们不适合同一行,每行一个参数,以提高可读性。示例:
def test_user_can_filter_all_communities(
self,filter_field: str,filter_value: JSONSerializable,include_results: list,):
# my code here
...
目前对我来说最重要的是后者。
我曾尝试使用 autopep8
、pylint
、yapf
和 black
,但尽管为每个尝试了不同的配置,但我目前无法通过自动代码格式化程序。
当我使用 black
时,参数如下所示:
def test_user_can_filter_all_communities(
self,include_results: list
):
这让我发疯,因为我喜欢立即“枚举”我的函数/方法需要多少个参数。 ?
当我使用 yapf
时会发生这种情况:
def test_user_can_filter_all_communities(self,include_results: list):
不幸的是,它仍然不理想,因为我对变量名称很冗长,因此从上面的参数继续缩进在很多时候是不可能的,同时还强制执行行长度限制。
我习惯于以这种方式编写代码,这种风格不仅能帮助我发现代码异味和潜在错误,而且还能提高工作效率。但目前我正在自己开发一个中等规模的代码库,通过手动格式化来强制执行这种风格占用了我太多时间。
是否有任何自动代码格式化程序可以帮助我实现这一目标?或者有人知道如何通过上述方法之一实现这一目标吗?
(我确实记得 3 年前在一个项目中工作,我们使用 pylint
或 black
强制执行此代码样式,因此它应该以某种方式可行,但我不知道如何。 )
提前致谢。
解决方法
在最后一个参数后添加一个逗号,黑色会做你想做的事。
def test_user_can_filter_all_communities(
self,filter_field: str,filter_value: JSONSerializable,include_results: list,):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。