广告
返回顶部
首页 > 资讯 > 后端开发 > Python >[Python] 程序结构与控制流
  • 414
分享到

[Python] 程序结构与控制流

结构程序Python 2023-01-31 01:01:57 414人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1. 条件语句 if、else与elif语句用于控制条件代码的执行。条件语句的一般格式如下: if expression: statements elif expression: statements elif expres

1. 条件语句

if、else与elif语句用于控制条件代码的执行。条件语句的一般格式如下:

if expression:
    statements
elif expression:
    statements
elif expression:
    statements
...
else:
    statements

如果不需要执行任何操作,可以省略条件语句的else和elif子句。如果特定子句下不存在要执行的语句,可以使用pass语句。
 

2. 循环与迭代

可以使用for和while语句实现循环,例如:

while expression:
    statements

for i in s:
    statements

while语句反复执行循环体中的语句。直到相关表达式求值为false。for语句迭代s中的所有元素,直到再元可用元素。for语句仅适用于可支持迭代的对象。
如果迭代中使用的元素是元素大小完全一致的序列,每次迭代时,会把相应序列的各个元素赋值给变量x、y和z。尽管使用这行代码时s大多为元组序列,但s中的各项可以为任意类型的序列,包括列表、生成器和字符串
循环时,除了数据值之外,有时还需要跟踪数字索引,可以使用内置函数enumerate(),例如:

for i,x in enumerate(s):
    statements

enumerate(s)创建了一个迭代器,其返回值就是一个元组的序列(0, s[0])、(1, s[1])、(2, s[2])等等。关于迭代的另一个常见问题是并行迭代两个以上的序列,可以使用zip()函数,例如:

for x, y in zip(s, t):
    statements

zip(s, t)将序列s和t组合成一个元组序列(s[0], t[0])、(s[1], t[1])、(s[2], t[2])等等。如果s和t的长度不等,则用完长度最短的索引为止。
使用break语句可从循环中跳出,例如:

for line in open("foo.txt"):
    stripped = line.strip()
    if not stripped:
        break # 遇到空行,停止读取

使用continue语句可以跳到循环的下一次迭代,例如:

for line in open("foo.txt"):
    stripped = line.strip()
    if not stripped:
        continue # 跳过空行

 

3. 异常

异常会中断程序的正常控制流。使用raise语句可以引发异常。raise语句的一般格式是raise Exception([value]),其中Exception是异常类型,而value是一个指定异常相关细节的可选值,例如:

raise RuntimeError("unrecoverable Error")

如果raise语句没有带任何参数,将会再次引发最近一次生成的异常。使用try和except语句可以捕捉异常,例如:

try:
    f = open('foo')
except IOError as e:
    statements

出现异常时,解释器将停止执行try代码块中的语句,并寻找可匹配该异常的except子句。执行完except子句后,控制权就会传递给出现在try-except代码块之后的第一条语句。try-except语句可以嵌套使用。如果异常传递到程序的最顶级却仍未被捕获,解释器就会终止程序运行。
except语句的可选修饰符as var提供了一个变量名称,如果出现异常,就会在其中放置一个提供给raise语句的异常类型的实例。异常处理程序可以检查该值,也可以使用isinstance()函数检查异常类型。
处理程序可以捕获多种类型的异常,使用Exception可以捕获除与程序退出相关之外的所有异常,例如:

try:
    do something
except (IOError, TypeError) as e:
    # 处理I/O、类型异常
except Exception as e:
    # 处理所有异常

使用except语句时如果不带任何异常类型,也会捕获所有异常,例如:

try:
    do something
except:
    # 处理所有异常

try语句也支持else子句,它必须跟在最后一个except子句后面。如果try代码块中的代码没有引发异常,就会执行else子句中的代码,例如:

try:
    f = open('foo', 'r')
except IOError as e:
    # 处理I/O异常
else:
    data = f.read()
    f.close()

finally语句为try代码块中的代码定义了结束操作,例如:

f = open('foo', 'r')
try:
    # do something
finally:
    f.close()

finally用于提供一些代码,无论是否出现错误,都必须执行该代码。如果没有引发异常,finally子句中的代码将在try代码块中的代码执行完毕后立即执行。如果引发了异常,控制权首先传递给finally子句的第一条语句。这段代码执行完毕后,将交由另一个异常处理程序进行处理。
如果要创建新异常,就定义父类为Exception的新类,例如:

class NetworkError(Exception):
    pass

可用如下方式使用这个异常:

raise NetworkError("Cannot find host.")

引发异常时,将提供给raise语句的可选值用作异常的类构造函数的参数。通常它就是一个表示消息的字符串,但用户自定义的异常可以带有一个或多个异常值,例如:

class DeviceError(Exception):
    def __init__(self,errno,msg):
        self.args = (errno,msg)
        self.errno = errno
        self.errmsg = msg
raise DeviceError(1, 'Not Responding')

包含__init__()方法参数的元组赋值给属性self.args。打印异常跟踪消息时就需要用到这个属性。如果不定义该属性,出现错误时,用户就无法看到关于异常的有用信息。
 

4. 上下文管理与with语句

with语句支持在由上下文管理器对象控制的运行时上下文中执行一系列语句,例如:

with open("debuglog", "a") as f:
    f.write("Debugging\n")
    statements
    f.write("Done\n")

import threading
lock = threading.Lock()
with lock:
    statements

在第一小段代码中,当控制流离开with语句后面的代码块时,with语句将自动关闭已打开的文件。在第二小段代码中,当控制流进入with语句后面的代码块时自动请求一个定,而在控制流离开时又自动释放了这个锁定。
with obj语句在控制流进入和离开其后的相关代码块时,允许对象obj管理所发生的事情。执行with obj语句时,它执行方法obj.__enter__()来指示正在进入一个新的上下文。当控制流离开该上下文时,就会执行方法obj.__exit__(type, value, traceback)。如果没有引发异常,__exit__()方法的3个参数均被设为None。否则,它们将包含与导致控制流离开上下文的异常相关的类型、值和跟踪信息。__exit__()方法返回True或False,分别指示被引发的异常得到了还是没有得到处理。
with obj语句接受一个可选的as var说明符,如果指定了该说明符,obj.__enter__()方法的返回值将保存在var中。with语句只对支持上下文管理协议(__enter__()和__exit__()方法)的对象有效。用户定义的类可以实现这些方法,从而定义它们自己的自定义上下文管理。例如:

class ListTransaction(object):
    def __init__(self, thelist):
        self.thelist = thelist
    def __enter__(self):
        self.workinGCopy = list(self.thelist)
        return self.workingcopy
    def __exit__(self, type, value, tb):
        if type is None:
            self.thelist[:] = self.workingcopy
        return False

 

5. 断言与__debug__

assert语句可以在程序中引入调试代码。assert的一般格式为:

    assert test [, msg]

其中test是一个表达式,其值应该为True或False。如果test求值为False,assert就会引发AssertionError异常并使用在assert中提供的可选消息msg,例如:

    def write_date(file, data):
        assert file, "write_data: file not defined"

除了assert语句之外,python还提供内置的只读变量__debug__,除非解释器运行在最优模式中,不则它的值为True。程序可以在需要时检查这个变量。

--结束END--

本文标题: [Python] 程序结构与控制流

本文链接: https://www.lsjlt.com/news/183082.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [Python] 程序结构与控制流
    1. 条件语句 if、else与elif语句用于控制条件代码的执行。条件语句的一般格式如下: if expression: statements elif expression: statements elif expres...
    99+
    2023-01-31
    结构 程序 Python
  • Java流程控制之顺序结构
    目录1.关于顺序结构2.顺序结构简单图示3.示例助解Java中的流程控制语句可以这样分类:顺序结构,选择结构,循环结构。 1.关于顺序结构 JAVA的基本结构就是顺序结构,除非特别指...
    99+
    2022-11-12
  • 一篇文章搞懂Python程序流程控制结构
    目录一、程序的组织结构1.三种基本结构2.程序流程图二、顺序结构二、选择结构(分支结构)1.单分支 if2.双分支 if…else3.多分支 if…eli...
    99+
    2022-11-11
  • python流程控制有哪些结构
    python中的流程控制结构有顺序结构、分支结构和循环结构三种:顺序结构顺序结构就是指按顺序去执行步骤,即语句从上至下按顺序执行。分支结构分支结构是指根据条件来选择性的执行某段代码,python中常使用if语句来实现分支结构。循环结构pyt...
    99+
    2022-10-09
  • MySQL--流程控制结构
    一、分支结构   #1.if 函数     语法:if(条件  ,  值1,值2)    功能:实现双分支    应用在begin end中或外面        #2.case 结构    语法:    情况1:类似于switch     ...
    99+
    2018-06-17
    MySQL--流程控制结构 数据库入门 数据库基础教程
  • Python程序控制结构是什么
    这篇“Python程序控制结构是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pyth...
    99+
    2022-10-19
  • JavaScript中有哪些结构的程序控制流
    本篇文章为大家展示了JavaScript中有哪些结构的程序控制流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、if条件语句基本格式:if(表述式)语句段1;.....
    99+
    2022-10-19
  • Java流程控制之选择结构
    目录1、if单选择结构2、if双选择结构3、if多选择结构4、嵌套的if结构5、switch多选择结构6、补充:case穿透布尔表达式: 布尔表达式(Boolean expressi...
    99+
    2022-11-12
  • Java程序顺序结构中逻辑控制语句详解流程
    目录一.顺序结构二.分支结构1.if语句2.switch 语句三. 循环结构1 .while 循环2. break3. continue4.for循环5.do while循环四.输入...
    99+
    2022-11-12
  • Java流程控制之顺序结构的示例分析
    这篇文章主要介绍了Java流程控制之顺序结构的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java中的流程控制语句可以这样分类:顺序结构,选择结构,循环结构。1.关...
    99+
    2023-06-22
  • python常见的流程控制结构有哪几种
    python常见的流程控制结构有三种,分别是顺序结构、选择结构和循环结构等。详细介绍:1、顺序结构,这是程序中最简单的结构,按照代码的先后顺序,从上到下依次执行;2、选择结构,这种结构可以根据一定的条件判断,选择执行不同的代码块,在Pyth...
    99+
    2023-12-12
    python 流程控制
  • python学习之路2(程序的控制结构)
    1.1 单分支             if <条件>:                       例:guess = eval(input())               <语句块>            ...
    99+
    2023-01-31
    之路 结构 程序
  • 如何掌握javascript流程控制结构
    今天小编给大家分享一下如何掌握javascript流程控制结构的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • Python程序流程控制实验
    1. 编写程序计算 1+3+5+7…+99 之和。 sum=0 for i in range(1,100,2):     sum+=i print(sum) 2. 编写...
    99+
    2022-11-13
  • Java基础之三大控制流程结构
    目录一、前言二、顺序结构三、选择结构3.1 if选择结构3.2 switch选择结构四、循环结构4.1 While循环4.2 DoWhile循环4.3 For循环一、前言 在代码的控...
    99+
    2022-11-12
  • Python学习之流程控制与条件判断总结
    目录初识条件判断(逻辑判断)逻辑判断与逻辑语句if 语句关于逻辑判断应用的总结if … else … 语句elif 语句关于条件判断的条件嵌套条件语句的总...
    99+
    2022-11-13
  • Java流程控制之循环结构while、do...while
    目录1、while 循环2、do…while 循环3、while和do…while的区别本篇笔记内容记录while循环以及do…while循...
    99+
    2022-11-12
  • lyt经典版MySQL基础——流程控制结构
    1 #流程控制结构 2 8 9 #一、分支结构 10 #1.if函数 11 20 21 #2.case结构 22 53 54 #案例 55 #创建存储过程,根据传入的成绩,来显示等级,比如传入的...
    99+
    2019-07-20
    lyt经典版MySQL基础——流程控制结构 数据库入门 数据库基础教程 数据库 mysql
  • Java流程控制语句之If选择结构
    目录一、选择结构大纲二、if单选择结构三、if双选择结构四、if多选择结构五、嵌套的if结构六、代码show一、选择结构大纲 if单选择结构 if双选择结构 ...
    99+
    2022-11-12
  • Python中的程序流程控制语句
    目录一、分支语句二、循环语句1.可迭代对象2.while循环3.for循环4.九九乘法表三.循环控制语句1.break2.continue3.goto4.else四、循环相关的内置函...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作