当前位置:   article > 正文

Python进阶语法(一)_列表推导式中的变量属于局部变量吗

列表推导式中的变量属于局部变量吗

目录

一、Python列表推导式

1.1、使用方法

1.2、列表推导式优点

1.2.1、提升效率

1.2.2、方便转换数据

1.2.3、用于过滤数据

1.3、推广延申

1.3.1、字典推导式

1.3.2、元组推导式

1.3.3、集合推导式

二、Python三元表达式

2.1、用法

2.2、扩展用法

三、断言

四、上下文管理器(with—as)

五、异常捕获预处理

5.1、try......except语句

5.2、try......except...else语句

5.3、直接抛出异常语句

5.4、finally语句

5.5、常见异常类型


一、Python列表推导式

定义:是一种数据处理方式,在python中转化和过滤数据

格式:[表达式 for 迭代变量 in 可迭代对象【if 条件表达式】]

其中【】中的数据可以省略

1.1、使用方法

列表推导式根据for循环语句进行优化,且最终得到一个新的列表

1、优化单层For循环

For循环写法

 列表推导式写法

2、优化双层For循环

For循环写法

 列表推导式写法

3、嵌套写法

For循环写法

 列表推导式写法

 

1.2、列表推导式优点

1.2.1、提升效率

在 Python3 中列表推导式中引入的变量仅仅作用在局部作用域,只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。

1.2.2、方便转换数据

可以将列表中的数据批量进行转化,并将转化后的数据以新列表情况进行输出

1.2.3、用于过滤数据

通过后面条件表达式对数据进行过滤

 

1.3、推广延申

1.3.1、字典推导式

格式:{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}

注意:字典中不会出现同名key,第二次出现时会更新value数值,故无论如何迭代,字典中键仍旧具备唯一性。

1.3.2、元组推导式

格式:(元素 for 迭代变量 in 可迭代对象 [if 条件表达式])

        大家也应该发现了,元组推导式与列表推导式/字典推导式不同,列表推导式/字典推导式按格式书写完后输出为对应的列表和字典,而元组表达式输出的是一个生成器对象,此时如果想令该元组推导式输出一个元组的话,请用tuple(tuple1)来做映射即可

        元组推导式也被称为生成器推导式

1.3.3、集合推导式

格式:{元素 for 迭代变量 in 可迭代对象 [if 条件表达式]}

 注意:集合是无序且不重复的,所以执行过程中会先去重,并且每次运行显示的顺序不同

二、Python三元表达式

定义:在python中,三元表达式是一种语法结构,也被称之为条件表达式。

格式:输出(True) if 判断条件 else 输出(False)

2.1、用法

1、用于if语句简化

原if语句写法

 三元表达式写法

2、用于返回多条语句

If条件语句写法

 三元表达式写法

注意:此时代码返回的数据为元组,元组之间用逗号连接

3、函数中使用三元表达式

4、列表推导式中使用三元表达式

 注意:在列表推导式中使用三元表达式,需要将if条件语句提前,for循环语句推后。

5、lambda中使用三元表达式

6、嵌套场景

 

2.2、扩展用法

语法格式:(表达式为假输出X,表达式为真输出Y)[条件表达式])

          {表达式为假输出X1:Y1,表达式为真输出X2:Y2}[条件表达式]

元组条件表达式:

字典条件表达式:

三、断言

定义:Python断言(python assert)可以理解成简易的if else语句,目的是判断条件表达式是否为真,为真的时候程序继续执行,否则便停止运行,抛出AssertionError。

格式:assert 表达式,[异常打印]

 

四、上下文管理器(with—as)

含义:python中针对文件和数据库操作,都需要在程序执行完毕后进行清理,python继承了一套自动操作,目的是在每次文件或数据库使用完成后,直接自动释放对应资源。可以说,with...as语句实现了自动分配并释放资源。

格式: with 表达式 [as 指定一个变量名]:

                   代码块

                  代码块

[]中可以省略,含义为将前文表达式的结果保存到一个变量中

用途:

用于对文件的操作上,如果不使用上下文管理器,操作是这样的:

 With...as使用后如图所示:(with...as语句是一种python控制流语句,也是简单异常报错语句)

 

五、异常捕获预处理

定义:程序异常或出现BUG状态时,通过异常捕获预处理来实现报错层面的控制

5.1、try......except语句

程序默认执行状态下,出现报错就会直接终止运行,我们用try...except语句实现出现问题提示报错异常,然后继续执行接下来的代码。

不做处理情况下报错中止:

 格式:

 

        用try...except格式修改后得到下图所示,此时程序不会报错,会进入异常处理,处理完后继续程序向下执行。如果try语句中没有出现错误,则except中代码不会执行。

 

        注意:except后面书写的是异常报错对象,只有当try中报错现象和报错对象一致时才会进行异常处理,如果不一致,仍旧会出现错误。如下图所示:

         此时若想解决该问题,则需要在except后面加上对应报错对象即可,如下图所示:

        当然,还有种一劳永逸的方法,放我们不知道具体报错时,可以except后面什么都不写,省略异常对象,直接输出异常处理,如下图所示:

5.2、try......except...else语句

          该语句表示按照顺序进行异常处理,当待检测代码有异常时,如果均未满足前几种异常处理条件,则直接报错结束。若代码没有问题,则执行else下面的正常操作。

格式:

        举个简单的例子,如下图所示:

 

5.3、直接抛出异常语句

       通过except 异常类型 as e语句直接抛出异常,后面的e只是一个变量,可以起名任意名称。

 

5.4、finally语句

       try … except语句也可以与finally语句一同使用,表示最后无论代码是否有异常均执行的代码。共三种情况,如下图所示:

       可看出无论能否匹配的上except和else的处理,都会执行finally后面的操作,该操作完成后才会报错退出。

5.5、常见异常类型

AttributeError 某个对象没有属性

Exception 通用型异常对象

FileNotFoundError 找不到文件

IOError 输入输出异常

IndexError 索引异常

KeyError 键异常

NameError 对象名称异常

SyntaxError 语法错误

TypeError 类型错误

ValueError 值错误

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/589932
推荐阅读
相关标签
  

闽ICP备14008679号