Pocoo style guide建议使用break
,continue
和return
语句来避免深度嵌套代码。你会怎么做?如何使用break,continue和return语句来避免Python中的嵌套代码?
2
A
回答
3
一个简单的例子是,取而代之的是:
for item in seq:
if someCondition:
# Here is our code block
if blah:
more.stuff()
你可以做到这一点
for item in seq:
if not someCondition:
continue
# Now our code block is here
if blah:
more.stuff()
注意,后者节省了缩进级别。显然,你不能总是这样做,但在某些情况下,它提高了可读性,以便在开始时处理“如果X立即停止”条件,而不必在if
块中包装大量代码。
2
,而不需要编写例如:
if param1Valid:
if param2Valid:
....
你可以使用保护条款:
if not param1Valid:
return
if not param2Valid:
return
....
很多文章歌颂后卫条款的美德:
- http://blog.mafr.de/2009/06/12/a-case-for-guard-clauses/
- http://www.codinghorror.com/blog/2006/01/flattening-arrow-code.html
- http://sourcemaking.com/implementation-patterns/guard-clause
您可以使用同样的方法与关键字继续在循环中。
相关问题
- 1. 使用`continue`作为break语句
- 2. continue语句在PowerShell中混乱的,看起来像break语句
- 3. C++:避免使用“return”语句复制
- 4. C# - 避免代码重复:嵌套如果语句
- 5. Unifying break,continue,return and throw
- 6. OpenMP和嵌套与循环continue语句
- 7. Return和Break之间的区别语句
- 8. JavaScript中continue语句的等效代码
- 9. 方法避免多次return语句
- 10. 在Python中使用大量嵌套语句时改进代码
- 11. 如何使用break语句
- 12. 嵌套if语句中的代码
- 13. while和break语句python 2.7
- 14. 嵌套在if语句中的第二个return语句
- 15. 如何重新设计我的代码以避免python中的嵌套类?
- 16. python中的break语句2.6
- 17. 如果声明,避免嵌套? (Python 2.7)
- 18. 哪个更好?在switch语句中使用break或return时?
- 19. 使用语句和Microsoft代码进行嵌套分析
- 20. Objective-C:使用最少代码的多个if和return语句
- 21. Break and Continue(C)
- 22. C++ continue与break
- 23. 如何在golang模板中使用continue和break关键字?
- 24. 如何在Django模板中使用break和continue?
- 25. 避免嵌套块
- 26. Return语句!=和&&
- 27. 如何在下面的代码中避免python代码
- 28. 嵌套的SQL语句使用和
- 29. 避免在switch语句中硬编码
- 30. continue语句
这两个答案都很有用,但并非详尽无遗。大卫给了另一个案子,没有循环。 – Bentley4
@ Bentley4:你不可能得到一个详尽的答案,因为这个问题是关于风格的。它没有对任何特定的代码做出任何具体的声明。这只是说,总的来说,遵守这些政策是很好的。 – BrenBarn
我想说这两个答案都是详尽的。两个答案都说明了*概念*。为了在你的代码中应用这个,你需要理解这个概念。您将无法直接使用代码。你需要在你的设置中应用*想法*。 –