【问题标题】:Python with statement break line without backslash [duplicate]带有不带反斜杠的语句换行符的Python [重复]
【发布时间】:2018-05-06 13:50:45
【问题描述】:

如何在不使用“\”的情况下打破这一行?

with mock.patch('six.moves.builtins.open', mock.mock_open()), mock.patch('my_module.yaml.safe_load') as mock_yaml:
    #do something

我尝试使用括号,但它抱怨 SyntaxError 关于“as”

with (mock.patch('six.moves.builtins.open', mock.mock_open()),
    mock.patch('my_module.yaml.safe_load') as mock_yaml):
    #do something

【问题讨论】:

  • 是在文件中还是在 Python 控制台中?
  • 在一个文件中,我从控制台执行该文件。
  • @user2357112 这似乎不是一个很好的重复......答案都集中在该问题的“集成 cmets”部分,这与这个问题无关。
  • @glibdud:同样的问题。内联 cmets 阻止您使用反斜杠延续,因此答案都是关于将 with 拆分为不带反斜杠的行。

标签: python


【解决方案1】:

将它放在一组括号内,但在mock.patch(....) 周围没有括号,应该根据PEP8 Python Style Guide 工作,因为括号之间隐含的行延续:

with mock.patch('six.moves.builtins.open', 
                mock.mock_open()), mock.patch('my_module.yaml.safe_load') as mock_yaml:

另一个选项类似于您的第二个建议,但右括号移到 as 之前:

with (mock.patch('six.moves.builtins.open', mock.mock_open()), 
      mock.patch('my_module.yaml.safe_load')) as mock_yaml:

【讨论】:

  • 你能准确地说明你的意思吗?
  • 我认为你不能在 , 之后中断,但你可以在括号内中断。
  • 你能检查一下这是否有效吗?我认为可能缺少一组不同的括号 - 我已将它们添加到我认为它们应该去的地方,但我可能错了。如果我愿意,很高兴编辑我的答案。
  • 我认为你搞砸了括号; mock.patch 不是这样工作的。
  • 我想,在这种情况下,考虑到括号的有趣位置,使用反斜杠可能是最好的选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
相关资源
最近更新 更多