首页 > 其他分享 >3月06日课后总结

3月06日课后总结

时间:2023-03-06 17:37:26浏览次数:37  
标签:总结 __ 06 res 生成器 yield next 课后 print

3/06课后总结

异常捕获补充

try:
    print(ekaskl)	# 不会执行
except Exception as e:
    print(e)	#name 'ekaskl' is not defined
else:
    print('没得问题')	# else中的代码只会在代码没有问题下才会运行
finally:
    print('反正都行')	# 不管包不报错都会运行
    
try:
    print(1)	# 正常执行
except Exception as e:
    print(e)	# 没有错误不运行
else:
    print('没得问题')	# 不报错,执行
finally:
    print('反正都行')	# 正常执行

for循环原理补充

l = [1, 2, 3, 4, 5]

   # for i in l:
       # print(i)
res = iter(l)
while True:
    try:
        print(next(res))
    except Exception:
        break
"""
	注释掉的for循环的底层逻辑就是while循环
"""

生成器对象

# range()就是一个典型的生成器,生成器的作用就是节省空间
# 生成器一定是迭代器,迭代器不一定是生成器
def index():
    print(1)
    yield 1111
    print(2)
    print(3)
    yield 2222
    print(4)
    print(5)
    yield 3333
    print(6)


res = index()	# 从此时起就变成了生成器
ret = res.__next__()	# 1 遇到了yield就挺住了
print(ret)	# 1111 将yield直接返回
ret = res.__next__()	# 2 3 继续执行代码,知道遇到下个yield
print(ret)	# 2222 继续返回yield
ret = res.__next__()	# 4 5 
print(ret)	# 3333
"""
	函数中存在yield,在调用前是普通函数,调用后就变成了生成器(迭代器)
"""

生成器的案例:实现range方法

def my_reang(x, y=None, z=1):
    if not y:
        y = x
        x = 0
    while x < y:
        yield x
        x += z
    while x > y:
        yield x
        x -= z


for i in my_reang(2, 20, 1):
    print(i)

yield传值(了解)

def eat():
    print('开始干饭')	
    while True:
        food = yield
        print('吃%s' % food)

res = eat()  # 把函数变成生成器
print(res.__next__())  # 遇到yield立马停止
res.send('锅巴')  # send方法,先调用__next__再传参
res.send('锅巴1')
res.send('锅巴2')

yield与return的对比

yield:
    1. 可以有返回值
    2. 把函数停住,不结束
    3. 把函数变成生成器,支持__next__取值
return:
	1. 可以有返回值
    2. 结束函数的运行

生成器表达式

def add(n, i):
    return n + i

def test():
    for i in range(4):
        yield i

g = test()
for n in [1, 10, 11]:
    g = (add(n, i) for i in g)
    """
        第一次循环:
            g = (add(1, i) for i in g)
        第二次循环:
            g = (add(n, i) for i in (add(n, i) for i in g))
    """
res = list(g)
print(res)

# A. res=[10,11,12,13]
# B. res=[11,12,13,14]
# C. res=[20,21,22,23]
# D. res=[21,22,23,24]

常见内置函数

l = [1, 2, 3, 0]
abs(-1)  # 绝对值
all(l)  # 有一个假就为假
any(l)  # 有一个真就为真
myslice = slice(5)    # 设置截取5个元素的切片
divmod(100, 10)  # 取模(100被除数,10除数) (10商,0余数)
eval()  # 识别简单的python代码
exec()  # 识别python代码,但是要符合规范
isinstance('123', int)  # 判断类型
chr(65)  # 转成字符
ord('A')  # 转成数字
sum()  # 求和
pow()  # 次方
res=bytes(s, 'utf-8')  # 转成二进制编码
callable(index)  # 查看是否可调用
round(3.4)  # 四舍五入
locals()  # 返回当前位置全部的局部变量

标签:总结,__,06,res,生成器,yield,next,课后,print
From: https://www.cnblogs.com/juzixiong/p/17184664.html

相关文章

  • day06 打卡242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
    day06打卡242.有效的字母异位词349.两个数组的交集202.快乐数242.有效的字母异位词242题目链接1.思路:可以先记住s的每个字符,如果出现就+1;再次循环t的每一个字符,寻......
  • Lodash中is系方法总结
    前言工作中经常会遇见变量容错处理的应用场景,而Lodash提供了很多空值判断和类型判断方法,现在挑选出常用的几个方法来进行分析,进而学习一下优秀的编码思路。isEmpty()......
  • 高德Go生态的服务稳定性建设|性能优化的实战总结
    高德Go生态的服务稳定性建设|性能优化的实战总结https://mp.weixin.qq.com/s/UHaCLhiIyLYVrba-nEUONA高德Go生态的服务稳定性建设|性能优化的实战总结原创 阳迪、联想、......
  • JS中创建对象与继承的方法总结
    js中对象的定义与其它面向对象语言不同,它的对象被描述为:一组无序属性的集合,其属性可以包含基本类型值、对象或者函数。而其它面向对象语言中的对象,通常指代可以通过类创建......
  • QDir类及其用法总结
    简介QDir类提供了访问系统目录结构及其内容的与平台无关的方式。头文件:#include<QDir>QDir类用来操作路径名及底层文件系统,获取关于目录路径及文件的相关信息,也......
  • C++学生成绩管理系统[2023-03-06]
    C++学生成绩管理系统[2023-03-06]C++课程设计说明参与专业信息和数学专业所有学生时间安排完成需求分析、类设计以及代码的实现答辩注意:答辩未过的需要参加下届C++......
  • C/C++飞机订票系统[2023-03-06]
    C/C++飞机订票系统[2023-03-06]三、飞机订票系统1.某公司每天有10航班(航班号、价格),每个航班的飞机,共有80个坐位,分20排,每排4个位子。编号为A,B,C,D·如座位号:10D......
  • C/C++课程设计题目[2023-03-06]
    C/C++课程设计题目[2023-03-06]课题1:公司考勤管理系统(一)、课程设计题目:某公司的考勤管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2......
  • SQL Server数据库的高性能优化经验总结二
    本文主要向大家介绍的是正确优化SQLServer数据库的经验总结,其中包括在对其进行优化的实际操作中值得大家注意的地方描述,以及对SQL语句进行优化的最基本原则,以下就是文章的......
  • SQL Server数据库优化大总结一
    SQL优化大总结:1.对查询进行优化,要尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引......