python - 自动格式化python代码以将参数放在同一行
问题描述
我真的很讨厌分散代码,我正在查看一堆带有参数和参数的长代码,这些代码占用了很多空间。
def __init__(self,
network,
value_coef,
entropy_coef,
lr=None,
eps=None,
max_grad_norm=None,
conv=False):
似乎写它的人强制限制了 50 个字符的行数,我完全不同意。我宁愿它看起来像这样。
def __init__(self, network, value_coef, entropy_coef, lr=None, eps=None, max_grad_norm=None, conv=False):
还有更多像这样的废话,我想摆脱。
if self.conv:
grid_obs = rollouts.grid_obs[:-1]\
.view(-1, *rollouts.grid_obs.size()[2:])
dest_obs = rollouts.dest_obs[:-1]\
.view(-1, *rollouts.dest_obs.size()[2:])
obs = (grid_obs, dest_obs)
我正在为 python 使用 VS 代码,并且是前 Intellij 用户,并且缺少所有内置的代码格式化代码工具。有人有任何提示吗?我一直在查看 autopep8,但似乎他们缺少该功能。
解决方案
首先,这不是 50 个字符的限制,而是 79 个(根据 pep8 约定),并且您希望它的方式不符合 pep8,因为它超过 100 列。
因此,对于第一个片段,您可以采用您不喜欢的方式(这是正确的方式),或者让您的格式化程序知道您希望行长超过 79 列。
对于第二个片段,您可以删除转义字符\
并让格式化程序完成其工作。我不认为它是你所说的“胡说八道”,但可以随意使用不同的格式。
Autopep8 或 Black 都运行良好,并且没有缺少任何功能。
如果您安装了其中一个,则必须将正确的键/值对添加到您的 settings.json:
"python.formatting.provider": "autopep8" // (or "black")
例如,如果您使用 autopep8,则可以通过将其添加到 settings.json 文件中来指定所需的行长(在您的情况下为 150):
"python.formatting.autopep8Args": [
"--line-length=150"
]
也是如此black
。在这种情况下,值将是:
"python.formatting.blackArgs": [
"--line-length=150"
]
使用该参数进行格式化会将您的代码包装到该数量。
您可以使用 alt+shift+f(在 Mac 上)或右键单击编辑器和“格式化文档”来格式化代码。
推荐阅读
- python - Munkres Python 包未生成最大总数
- javascript - jQuery '$' 总是未定义的
- python - Python数据表包中的内存不足操作:怎么做?
- php - 逾期更新状态
- python-3.x - 在 windows cmd 中正确激活我的虚拟环境文件
- javascript - TypeError: 在 Chrome 扩展中使用 axios 和 webpack 时适配器不是函数错误
- python - 匹配链接行为时删除正则表达式 - Python
- python - echo 命令不是打印空间
- python - 基于多列、计算频率和百分比的分组
- python - SyntaxError:使用视网膜网络库时语法无效