PythonDay12
day12内置_函数
今日内容
生成器
推导式
内置函数一
生成器
什么是生成器?生成器的本质就是一个迭代器
迭代器是python自带的
生成器是程序员自己写的一种迭代器
生成器编写方式:
1.基于函数编写
2.推导式方式编写
def func():
print('这是一个函数')
return '函数'
func()
def func():
print("这是一个生成器")
yield '生成器'
# 坑!!!,其实这个生成器只能执行一个next,因为只有一个yield
func() # 生成一个生成器
print(func().__next__()) # 启动生成器
print(func().__next__())
# 上方这句代码的意思是:创建一个生成器并且执行一个next方法,两句一样但互不相干
函数体中出现yield代表要声明一个生成器
def func():
msg = input("请输入内容")
yield msg
print("这是第二次启动")
yield "生成器2"
yield "生成器3"
yield "生成器4"
g = func()
print(next(g))
print(next(g))
print(next(g))
print(next(g)) # 不能超过yield次数
yield和return的区别
相同点:
都是返回内容
都可以返回多次,但是return写多个只会执行一个
不同点:
return终止函数 yield是暂停生成器
yield能够记录当前执行位置
一个yield对应一个next
生成器的作用
# 生成器的作用是节省空间
# 可迭代对象:
# 优点: list,tuple,str 节省时间,取值方便,使用灵活(具有自己私有方法)
# 缺点: 大量消耗内存
# 迭代器:
# 优点:节省空间
# 缺点:不能直接查看值,使用不灵活,消耗时间,一次性,不可逆行
# 生成器:
# 优点:节省空间,人为定义
# 缺点:不能直接查看值,消耗时间,一次性,不可逆行
# 使用场景:
# 1.当文件或容器中数据量较大时,建议使用生成器
# 数据类型 (pyhton3: range() | python2 :xrange()) 都是可迭代对象 __iter__()
# 文件句柄是迭代器 __iter__() __next__()
没有send方法就是一个迭代器,具有send方法的就是一个生成器
def func():
lst = [1,2,3,45,6]
lst1 = ["alex","wusir","taibi","baoyuan"]
yield from lst
yield from lst1
# yield 将可迭代对象一次性返回
# yield from 将可迭代对象逐个返回
g = func()
for i in g:
print(i)
推导式
列表推导式:
普通循环
print([i for i in range(10)])
print([变量 for循环])
筛选
lst = []
print([i for i in range(10) if i % 2 == 0])
print([i for i in range(10) if i > 2])
[操作后的变量 for循环 判断操作]
集合推导式:
普通循环
print({i for i in range(10)})
{变量 for循环}
筛选
print({i for i in range(10) if i % 2 == 1})
{操作后的变量 for循环 操作}
字典推导式:
普通循环
print({i: i+1 for i in range(10)})
{键:值 for循环}
筛选模式
print({i:i+1 for i in range(10) if i % 2 == 0})
{操作的键:值 for循环 操作}
生成器推导式:
普通模式
tu = (i for i in range(10))
(变量 for循环)
筛选模式
tu = (i for i in range(10) if i > 5)
(操作后的变量 for循环 操作)
内置函数一
all() 判断容器中的元素是否都为真
any() 判断容器中的元素是否有一个为真
bytes() 将字符串进行编码
callable() 查看对象是否可 调用 == ()
chr() 通过表位序号查找元素
complex() 复数
eval() 神器一
exec() 神器二 神器禁止使用
frozenset() 冻结集合
globals() 查看全局空间变量
hash() 区分可变数据类型和不可变数据类型
help() 查看帮助信息
id() 查看内存地址
locals() 查看当前空间变量
oct() 十进制转八进制
ord() 通过元素获取当前unicode表位的序号
pow() 幂,两个参数是求幂,三个参数时求幂后在取余
repr() 查看数据的原生态
round() 保留小数位
divmod() 求商和余
bin() 十进制转二进制
PythonDay12的更多相关文章
- Python-Day12 Python mysql and ORM
一.Mysql数据库 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据 ...
- Python--day12(三元表达式、函数对象、名称空间与作用域、函数嵌套定义)
今日主要内容 1. 函数默认值细节(*) 2. 数据类型补充:三元表达式.列表推导式.字典推导式 (***) 3. 函数对象:函数名的各种应用场景 (*****) 4. 名称空间与作用域:解释 ...
- python-day12 MySQL、sqlalchemy
@第一节上周回顾没看 @博客day11 https://www.cnblogs.com/alex3714/articles/5950372.html @InnoDB,是MySQL的数据库引擎之一 @S ...
- 路飞学城Python-Day12(practise)
# 函数基础# 1.写函数,计算传入数字参数的和(动态传参)# def sum_num(x,y):# return x+y# print(sum_num(1,2))# 2.写函数,用户传入修改的文件名 ...
- 路飞学城Python-Day12
7月10日安排 完成所有函数作业和思维导图整理 [45.函数-生成器] 如果数据是有规律的,就可以先生成一个数据,等数据执行的时候再执行,也就是在真正调用数据之前,拿到数据的生成规律,而是拿到生 ...
- python-day12(正式学习)
目录 可变长参数 可变长形参之* 可变长实参之* 可变长形参之** 可变长实参之** 可变长参数应用 命名关键字形参 函数对象 四大功能 引用 当作参数传给一个函数 可以当作函数的返回值 可以当作容器 ...
- 初学Python-day12 装饰器函数
装饰器 1.概念 本质就是一个Python函数,其他函数在本身不变的情况下去增加额外的功能,装饰器的返回值是一个函数. 常用的场景:插入日志,事务处理,缓存,权限校验等. 2.普通函数回顾 1 def ...
随机推荐
- Miller Rabin 算法简介
0.1 一些闲话 最近一次更新是在2019年11月12日.之前的文章有很多问题:当我把我的代码交到LOJ上,发现只有60多分.我调了一个晚上,尝试用{2, 3, 5, 7, 11, 13, 17, 1 ...
- 安装Dubbo 并且安装注册中心(Zookeeper-3.3.6)
安装zookeeper 安装Tomcat 载dubbo-admin-2.5.4.war 进入Apache ZooKeeper官方网站进行下载,https://zookeeper.apache.org/ ...
- C++入门经典-例2.1-利用实数精度进行实数比较
1:代码如下: // 2.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" void main() { float eps = 0.000 ...
- 微信小程序底部菜单栏的使用方法
1.找到项目根目录的配置文件 app.json,在配置文件中加入配置代码.例如: "tabBar": { <!--底部的导航配置属性--> "color&qu ...
- Why are dashes preferred for CSS selectors / HTML attributes?
Why are dashes preferred for CSS selectors / HTML attributes? I use dashes because I don't have to h ...
- SQLServer备份计划制定
SQLServer备份计划制定 一.备份计划制定 管理-->维护计划-->维护计划向导: 可选择全库备份.差异备份.事务日志备份 为保障数据的完整性:可采用备份策略1.数据量小的场景,数据 ...
- P3373 【模板】线段树 2 (未完待续)
P3373 [模板]线段树 2 强烈安利这个大佬 超赞!!! 题解 本来以为这个题拿着线段树1的板子改改就好了,但是发现事情并没有那么简单,改了两天... 我们看到这个题其实涉及啦乘法和加法两种运算, ...
- C# CancellationTokenSource.Cancel 取消线程很鸡肋?
例子: CancellationTokenSource cts ; void MainWindow_Loaded(object sender, RoutedEventArgs e) { Task.Ru ...
- 初学vue 在做项目时遇到的问题与解决办法(使用element组件)(二)
表格每行里都有按钮 <el-table-column prop="option" label="操作" align="center" ...
- 搭建SVN服务器时报错:0x80004002
一.错误信息 Cannot query proxy blanket: no such interface supported (0x80004002) 二.解决方案 这个错误只会在有NVIDIA独立显 ...