流程控制也是Python的基本能力之一,它的作用是控制程序执行的路径,通常需要搭配条件来使用。只有满足条件之后,解释器才会执行对应的指令,而避开其它路径中的指令。它经常出现在各大编程场景,因此,也是必须掌握的。
本节将介绍以下3种流程控制方式:
if
条件if
...else
...if
... elif
...else
...if
条件假设你想设计一个函数,这个函数的功能是:输入一个过去的时间点,根据当前时间点与过去时间点的跨度,输出不同格式的时间提示。如果要实现这个功能,我们可以使用单个if
条件来完成,以下就是相对应的例子。
import time, datetime
def datetime_filter(t):
delta = int(time.time() - t)
if delta < 60:
return '1分钟前'
if delta < 3600:
return '%s分钟前' % (delta // 60)
if delta < 86400:
return '%s小时前' % (delta // 3600)
if delta < 604800:
return '%s天前' % (delta // 86400)
dt = datetime.datetime.fromtimestamp(t)
return '%s年%s月%s日' % (dt.year, dt.month, dt.day)
它的执行路径是:
delta < 60
为True
则返回以分钟为单位的计算结果,否则继续执行以下指令,delta < 3600
为True
则返回以分钟为单位的计算结果,否则继续执行以下指令,delta < 86400
为True
则返回以小时为单位的计算结果,否则继续执行以下指令,delta < 604800
为True
则返回以天为单位的计算结果,否则继续执行以下指令,False
则返回以年月日为单位的计算结果。if
...else
...以下是来自digwebs的代码片段
if __name__ == '__main__':
digwebs_app.run(9999, host='0.0.0.0')
else:
wsgi_app = digwebs_app.get_wsgi_application()
它的含义是:如果__name__ == '__main__'
为True
,那么Python解释器将执行指令digwebs_app.run(9999, host='0.0.0.0')
,否则Python解释器将执行wsgi_app = digwebs_app.get_wsgi_application()
。
if
... elif
...else
...Python中没有switch ... case ...
,取而代之的是多个条件的if ... elif ... else ...
。下面的例子将字符串v
中除了字母和数字的其它字符替换成空格,最终s
的值是I Love Digwebs
。
s = ``
v = `I~-Lo!#$%v^^^^e+++Dig[we}bs`
for ch in v:
if ch>='0' and ch<='9':
s = s + ch
elif ch>='A' and ch<='Z':
s = s + ch
elif ch>='a' and ch<='z':
s = s + ch
else:
s = s + ' '
以上就是Python支持的3种流程控制语句,通常你需要搭配一些条件来使用。它们会经常出现在Python脚本中,因此你必须掌握它们。值得注意的是,Python是通过指令缩进的方式来确定作用域的,因此如果某块逻辑属于同一个条件,那么这块逻辑的缩进需要保持一致。你可能会遇到一种情况:需要反复执行一些任务,这也是流程控制的一部分,只不过它是Python中的另外一个经常用到的能力:循环。
{{ c.user.name }}
{{ c.content }}