目前,我正在使用Django 3.1.4开发一个Python 3.8项目,我希望以以下方式实施代码样式:
Split iterables into multiple lines, keeping brackets in separate lines from their contents. For example:
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"),
)
Split function signature parameters into multiple lines where they don't fit the same one, with one parameter per line, for readability. Example:
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, filter_field: str, filter_value: JSONSerializable, include_results: list
):
这让我发疯,因为我喜欢“枚举”我的函数/方法立即接受多少参数。 🙈
当我使用yapf
时,会发生以下情况:
def test_user_can_filter_all_communities(self,
filter_field: str,
filter_value: JSONSerializable,
include_results: list):
不幸的是,它仍然不理想,因为我对变量名的描述过于冗长,所以从上面的参数继续缩进在很多时候是不可能的,同时还要强制执行一个行长度限制
我习惯用这种方式编写代码,这种风格让我更有效率,还能帮助我发现代码的气味和潜在的bug。但目前我自己正在开发一个中等大小的代码库,通过手动格式化来实现这种风格占用了我太多的时间
是否有任何自动代码格式化程序可以帮助我实现这一点?或者有人知道如何通过上述其中一种方法实现这一点吗
(我确实记得3年前在一个项目中工作过,我们用pylint
或black
强制执行这种代码样式,所以它应该在某种程度上是可行的,但我不知道怎么做。)
先谢谢你
在最后一个参数后添加逗号,black将执行您想要的操作
见:https://github.com/psf/black/issues/1288
相关问题 更多 >
编程相关推荐