欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。
这是系列第三篇,在这篇文章中我们将全面深入地介绍 Python 的控制流程,包括条件语句、循环结构和异常处理等关键部分,尤其会将列表解析、生成器、装饰器等高级用法一网打尽。此外,我还将分享一些独特的见解和研究发现,希望能给你带来新的启发。文章的结尾,我们将有一个 “One More Thing” 环节,我会分享一个很特别但又很少人知道的有用的 Python 控制流程的技巧。
Python的条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。条件语句的基本形式包括 if、if-else 和 if-elif-else 三种。 # if 语句 x = 10 if x > 0: print("x is positive") # if-else 语句 if x % 2 == 0: print("x is even") else: print("x is odd") # if-elif-else 语句 if x < 0: print("x is negative") elif x == 0: print("x is zero") else: print("x is positive")
注意Python的缩进规则,这是Python语法的一大特色。缩进用于区分代码块,比如以上if-elif-else的代码块。此外,Python中没有类似C++、Java的大括号{}来控制语句块,完全依赖于缩进。
Python中的循环有两种,一种是for循环,一种是while循环。
1 # for循环 2 for i in range(5): 3 print(i) 4 5 # while循环 6 count = 0 7 while count < 5: 8 print(count) 9 count += 1
Python的for循环更像是一个遍历循环,它会遍历序列中的每一个元素。而在很多其他语言中,for循环是通过条件判断来控制循环的。Python中的range()函数在很多情况下都非常有用,特别是在循环结构中。
在Python中,我们可以使用try-except语句来处理可能出现的错误或异常。
try: print(1 / 0) except ZeroDivisionError: print("You can't divide by zero!") ``` Python的异常处理机制是一个很强大的工具,它可以帮助我们在出现错误或异常时保持程序的正常运行。不仅如此,Python的异常处理还支持多个except子句,这样我们可以对不同类型的异常进行不同的处理。此外,我们还可以使用finally子句,无论是否发生异常,finally子句中的代码总会被执行,常常用于进行清理工作。 # 四、控制流程的高级用法! Python 的控制流程不仅仅局限于简单的条件判断、循环和异常处理。Python 还有很多高级的控制流程工具,它们可以帮助我们更高效、更精简地编写代码。以下是一些常见的高级控制流程工具: ## 1. 列表解析 列表解析是一种创建列表的简洁方法,它在一行代码中就可以完成循环和条件判断等操作。以下是一个列表解析的例子: ```python squares = [x**2 for x in range(10)]
以上代码会生成一个包含 0 到 9 的平方的列表。这个列表解析的过程可以理解为:对于每个在 range(10)
中的 x
,计算 x
的平方,然后将结果添加到列表中。列表解析相比普通的循环语句,不仅代码更简洁,而且执行速度更快。这是因为列表解析在内部实现了优化,而普通的循环语句没有。
生成器表达式和列表解析类似,但它生成的是一个生成器对象,而不是一个实际的列表。生成器对象是一个可迭代的对象,它在每次迭代时都会生成新的值,而不是一次性生成所有的值。以下是一个生成器表达式的例子:
squares = (x**2 for x in range(10))
以上代码会创建一个生成器对象,这个对象会在每次迭代时生成一个平方数。你可以通过 next()
函数或者 for
循环来迭代这个对象。生成器表达式比列表解析更节省内存,因为它不需要一次性生成所有的值。这在处理大规模数据时非常有用。
装饰器是一个非常强大的工具,它允许我们修改一个函数或者类的行为,而不需要改变它的源代码。以下是一个简单的装饰器例子:
1 def my_decorator(func): 2 def wrapper(): 3 print("Something is happening before the function is called.") 4 func() 5 print("Something is happening after the function is called.") 6 return wrapper 7 8 @my_decorator 9 def say_hello(): 10 print("Hello!") 11 12 say_hello()
以上代码定义了一个装饰器 my_decorator
,它会在调用 say_hello
函数前后分别打印一段消息。@my_decorator
就是将 say_hello
函数装饰成 my_decorator
的方式。装饰器可以用来做很多事情,比如日志记录、性能测试、事务处理、缓存等等。在很多情况下,使用装饰器可以让我们的代码更加干净,更易于管理和重用。
我在阅读GitHub和各种技术博客中发现了一个很特别但又很少人知道的Python控制流程技巧——使用else
子句在for
和while
循环中。
许多人可能不知道,for
循环和while
循环可以有一个可选的else
子句,它在循环正常结束时执行。如果循环被break
语句终止,else
子句将不会被执行。
1 for i in range(5): 2 print(i) 3 else: 4 print("Loop finished!") 5 6 count = 0 7 while count < 5: 8 print(count) 9 count += 1 10 else: 11 print("Loop finished!")
这个特性在很多情况下都非常有用,比如我们在循环中搜索一个元素,如果找到了就通过break
语句终止循环,如果循环正常结束还没有找到,就执行else
子句中的代码。
希望你在阅读这篇文章后,能对Python的控制流程有更深入的理解。如果你有任何问题或者有更好的建议,欢迎在下方留言,我们一起探讨,一起学习。
如有帮助,请多关注,如有需要,联系我:changyang0823@163.com
TeahLead_KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。