生成器的send方法、递推函数、匿名函数及常用内置函数
生成器的send方法
在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值
什么是send方法?
send方法相当于高级的next方法,send方法不仅可以通过yield方法取出生成器中的值,还可以向生成器中传值
send方法的工作步骤
由于生成器在执行过程中,不会直接执行,当使用next方法进行取值时才会执行,当遇到yield关键字时停止,并把yield中的值传递出来
首先,send方法会将外界的值传递进生成器内部,在由生成器中相应的变量进行接收
然后,生成器会向下执行,直到遇到下一个yield停止,并将yield后面的值返回出来 --> 相当于next方法
需要注意的是,由于生成器不会自动运行,只有在遇到next时才会向下执行,所以在遇到第一个yield之前不能使用send向生成器中传递值,或者只能传递None
案例:
persons = ['张三', '李四', '王五', '赵六', '钱七'] def order(persons):
for i in range(len(persons)):
if i == 0:
print('%s在面试' % persons[0])
else:
print('%s叫%s在面试' % (name, persons[i]))
print('%s面试完毕' % persons[i]) name = yield persons[i] obj = order(persons)
for i in range(len(persons)):
if i == 0:
p = obj.__next__()
else:
p = obj.send(p)
print('=============================')
递归函数
什么是递归函数?
-- 函数直接或者间接调用自身都叫递归函数
-- 回溯:通过条件找寻答案的过程
-- 递推:通过答案进行回推的过程
递归函数的特点:
-- 递归函数必须有出口
-- 递归函数进行回溯及递推时必须有规律
案例
# 获得第 count 个人的年纪
def get_age(count):
if count == 1:
return 58
# 第 九...一 个人 - 2
age = get_age(count - 1) - 2
return age age = get_age(3)
print(age)
匿名函数
什么是匿名函数?
-- 匿名函数就是不需要函数名的函数,该函数使用一次就会被回收。
匿名函数:
-- 匿名函数没有函数名
-- 匿名函数的关键字采用lambda
-- 关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()
-- 匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
匿名函数的形式:
lambda *args, **kwargs: '返回值'
-- 注意:
-- 参数的使用和有名函数一样,六种形参都支持
-- 返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
实例
a = lambda *args, **kwargs: '返回值1', '返回值2'
print(a) # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')
匿名函数的应用
-- 匿名的函数经常会配合内置函数进行使用
-- 实例:
-- max、min、sorted函数
max(iter, lambda x: x)
min(iter, lambda x: x)
sorted(iter, fn, reverse)
-- map、reduce函数
map(lambda x: x * 2, [3, 1, 2])
reduce(lambda x, y: x * y, [3, 1, 2])
常用的内置函数
常用的内置函数及内置的的类等放在源码的buildin文件中,可以通过一个内置函数进入这个文件
与类型相关的
list() str() ord() chr() bool() int() ...
print(ord('A'))
print(chr(97))
进制转化
print(bin(10)) # 1010
print(oct(10)) # 12
print(hex(10)) # a print(0b1111) # 15
print(0o10) # 8
print(0x11) # 17
常用操作类的
range() len() iter() next() enumerate() id() type() print() input() open()
原义字符串
print(r'a\nb')
print(ascii('a\nb'))
print(repr('a\nb'))
数学相关运算
abs() sum() max() min() pow() sorted()
print(abs(-1))
print(pow(2, 3)) # 2**3
print(pow(2, 3, 3)) # 2**3%3
生成器的send方法、递推函数、匿名函数及常用内置函数的更多相关文章
- Python-老男孩-01_基础_文件IO_函数_yield_三元_常用内置函数_反射_random_md5_序列化_正则表达式_time
Python2.7 缩进统一: 约定 常量 大写 , 变量 小写 判断一个变量在内存中的地址,也能看出是不是一个值 id()函数 >>> x = 'abc' >>&g ...
- python中的运算符及表达式及常用内置函数
知识内容: 1.运算符与表达式 2.for\while初步了解 3.常用内置函数 一.运算符与表达式 python与其他语言一样支持大多数算数运算符.关系运算符.逻辑运算符以及位运算符,并且有和大多数 ...
- python之迭代器 生成器 枚举 常用内置函数 递归
迭代器 迭代器对象:有__next__()方法的对象是迭代器对象,迭代器对象依赖__next__()方法进行依次取值 with open('text.txt','rb',) as f: res = f ...
- python中常用内置函数和关键词
Python 常用内置函数如下: Python 解释器内置了很多函数和类型,您可以在任何时候使用它们.以下按字母表顺序列出它们. 1. abs()函数 返回数字的绝对值. print( abs(-45 ...
- Python的常用内置函数介绍
Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...
- Python基础(二)——常用内置函数
1. 常用内置函数 (1)isinstance(object, classinfo) 用于判断一个对象是否为某一类型. object 是实例对象 classinfo 是基本类型如 int, floa ...
- 学习Python函数笔记之二(内置函数)
---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返 ...
- Python 基础之常用内置函数
1.常用内置函数 (1)abs 绝对值函数 intvar = -9 res = abs(intvar)print(res) (2)round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数 ,则 ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
- Python常用模块中常用内置函数的具体介绍
Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...
随机推荐
- MultipartFile类
MultipartFile类常用的一些方法: String getContentType()//获取文件MIME类型InputStream getInputStream()//后去文件流String ...
- 题解 [CF332C] Students' Revenge
题面 解析 辣鸡题面毁我青春 因为翻译的题面中写了一句\(剩下的n−k个不会完成\). 所以就以为剩下的\(n-k\)个都会算上不满意值. (然而事实是只有\(p-k\)个...) 首先根据主席的规则 ...
- AVL平衡树(非指针实现)
看了网上三四篇博客,学习了AVL树维护平衡的方式.但感觉他们给出的代码都有一点瑕疵或者遗漏,懂得了思想之后,花了一些时间把他们几篇的长处结合起来,没有使用指针,实现了一下.每个小逻辑功能都抽象成了函数 ...
- JavaWeb_(Spring框架)Spring配置文件
一.什么是spring IOC IOC(Inversion of Control)即控制反转,在我们以往的编程中如果需要一个bean往往需要去手动去new一个出来.而spring帮我们解决了这个问题, ...
- 原生javascript封装动画库
****转载自自己发表于牛人部落专栏的文章**** 一.前言 本文记录了自己利用原生javascript构建自己的动画库的过程,在不断改进的过程中,实现以下动画效果: 针对同一个dom元素上相继发生的 ...
- javascript实现集合Set、字典Dictionary、HashTable
集合是由一组无序且唯一(即不能重复)的项组成的.这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中. function Set() { this.items = {}; } S ...
- Mysql 逗号分隔行列转换总结
方法一 存储过程实现: -- 修改结束符,防止在mysql命令行中默认分号直接运行 delimiter $$ -- 创建一个计算拆分后字符串的个数函数 drop function if exists ...
- 处理输入为非对角阵的Clustering by fast search and find of density peak代码
Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio 是发表在Science上的一篇很 ...
- 014-数据结构-树形结构-基数树、Patricia树、默克尔树、梅克尔帕特里夏树( Merkle Patricia Tree, MPT)
一.基数树 Radix树,即基数树,也称压缩前缀树,是一种提供key-value存储查找的数据结构.与Trie不同的是,它对Trie树进行了空间优化,只有一个子节点的中间节点将被压缩.同样的,Radi ...
- 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验
课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对 ...