1. 第一类对象的特点

#1. 函数名可以当作值被赋值给变量
def func():
print(1)
ret = func
print(ret) #输出func函数的地址 #2. 函数名当作元素存放在容器中
def func():
a=1
print(a)
lst = [func,func,func] #放入lst中
for i in lst:
i() # 1 1 1 #3. 函数名可以当作函数的参数
def func(f):
print(1)
f()
def foo():
print(2)
func(foo) #foo地址给f 1 2 #4. 函数名可以当作函数的返回值
def func():
print(2)
def foo():
print(5)
return foo
ret = func() #foo 地址 2 5
ret() #调用 foo函数

2. 格式化

f"你好{'a'}"  #填充字符串
F"你好{'a'}" # F
s = f"你好{s1}" #填充变量
s = f"{35+15}" #填充计算公式
s = f"{a if a > b else b}" #填充表达式
s = f"{lst[0:2]}" #填充列表和字典

3.迭代器

3.1 可迭代对象

list、dic、str、set、tuple都是可迭代对象,使用灵活
#方法:
1. list__iter__()
2.ctrl 查看源码
3. print(dir(list)) 官方声明:只要对象具有__iter__()方法的就是迭代对象
可迭代对象的优点:
1.使用灵活
2.直接查看值
可迭代对象的缺点:消耗内存 取值方式:
list,tuple,str -- 索引
dict -- 键
set -- 直接取值

3.2 迭代器

#官方声明只要具有__iter__()方法__next__()方法就是迭代器
lst = [1,2,3,4,6]
new_lst = lst.__iter__() #将可迭代对象转换成迭代器
print(new_lst.__next__()) #从上一个位置开始向下打印一个元素
#迭代器取值超出范围时,会报错 #迭代器特性:
#1.一次性的(用完就没有了)
#2.不能逆行(不能后退)
#3.惰性机制(节省内存)
#迭代器什么时候用:当容器数据量较大时,使用迭代器
# while循环实现for循环的本质
s = "12345"
new_s = s.__iter__()
while True:
try: #会处理错误
print(new_s.__next__()) # for真实本质
except StopIteration: #当出StopIteration错误时,关闭
break
#或
except Exception: #万能异常捕获错误
break

4. 递归

1. 不断调用自己本身(自己调用自己)——死循环
最大层次1000,实际测试997/998
2. 有明确的终止条件
满足以上两个才是有效递归。
递:一直执行直到碰到结束条件
归:从结束条件开始往回退
def age(n):
if n == 3:
return 30
else:
return age(n+1)-5
print(age(1)) # 20 #上面解开:
def age3(n):
if n == 3:
return 30
# else:
# return age2(n+1)-5
def age2(n):
if n == 3:
return 30
else:
return age3(n+1)-5
def age1(n):
if n == 3:
return 30
else:
return age2(n+1)-5
print(age1(1))

python 11 迭代器的更多相关文章

  1. python之迭代器与生成器

    python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i i ...

  2. python基础——迭代器

    python基础——迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器 ...

  3. python基础—迭代器、生成器

    python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...

  4. Python:迭代器的简单理解

    一.什么是迭代器 迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样).迭代器是实现了__next__()方法的对象(这个方法在调用时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序 ...

  5. 第十六篇 Python之迭代器与生成器

    一.迭代器 一. 递归和迭代 生活实例说明什么是递归和迭代 A想去腾达大厦,问B怎么走路,B 说我不知道,我给你问问C,C也不知道,C又去问D,D知道,把路告诉了C,C又告诉B,B最后告诉A, 这就是 ...

  6. python——iterator迭代器|iterator详解——20140918|

    -----------------------------------------------------------------------------前言--------------------- ...

  7. 搞清楚 Python 的迭代器、可迭代对象、生成器

    很多伙伴对 Python 的迭代器.可迭代对象.生成器这几个概念有点搞不清楚,我来说说我的理解,希望对需要的朋友有所帮助. 1 迭代器协议 迭代器协议是核心,搞懂了这个,上面的几个概念也就很好理解了. ...

  8. python函数-迭代器&生成器

    python函数-迭代器&生成器 一.迭代器 1 可迭代协议 迭代:就是类似for循环,将某个数据集内的数据可以“一个挨着一个取出来” 可迭代协议: ① 协议内容:内部实现__iter__方法 ...

  9. python --- 11 第一类对象 函数名 闭包 迭代器

    一 .函数名的运用    ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址    ③ 函数名可以赋值给其他变量         ④函数名可以当做容器类 ...

随机推荐

  1. Java:前程似锦的 NIO 2.0

    Java 之所以能够霸占编程语言的榜首,其强大.丰富的类库功不可没,几乎所有的编程问题都能在其中找到解决方案.但在早期的版本当中,输入输出(I/O)流并不那么令开发者感到愉快: 1)JDK 1.4 之 ...

  2. CSS(下)

    1.CSS边框 边框属性: 1.border-width 宽度 2.border-style 样式 none 无边框 dotted 点状虚线边框 dashed 矩形虚线边框 solid 实线边框 3. ...

  3. FSCapture 取色工具(绿色版 )

    百度云: 链接:http://pan.baidu.com/s/1kV7BhVD 密码:zel3

  4. 下载Opencv和OpencvSharp,让我们开始图像之旅

    我们学习和使用OpencvSharp,还下载Opencv干什么?很简单,研究人家的源码是最好和最快速的学习方式. 第一Opencv源码下载,网络上很多,请大家自行搜索,版本请下载4.1.0.当前你要用 ...

  5. 【杂谈】如何对Redis进行原子操作

    什么时候需要进行需要原子操作? 很常见的例子,就是利用Redis实现分布式锁. 实现锁需要哪些条件? 我们知道要实现锁,就需要一个改变锁状态的方法.这个方法能原子地对锁的状态进行检查并修改.如果修改成 ...

  6. iView学习笔记(一):Table基本操作(包含前后端示例代码)

    iView表格操作 1.前端准备工作 首先新建一个项目,然后引入iView插件,配置好router npm安装iView npm install iview --save cnpm install i ...

  7. Centos7 安装Homestead环境2

    历史命令, -- :: cd /etc/yum.repos.d/ -- :: wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtu ...

  8. 【Android】Failed to convert @drawable/picture into a drawable

    刚使用 eclipse 遇到了这个问题,图片的效果未显示出来,上网查找后发现这其实不算是问题:重启下工程或 eclipse 就行了. PS: 直接运行工程也可以,不影响效果.

  9. Android Studio 制作简单的App欢迎页面——基于Android 6.0

    在许多的Android App中,我们点击进入时,都可以看到一个欢迎页面,大概持续了几秒,然后跳转至主页面.以下是我开发过程中总结出的一些方法和例子. 一.创建一个新的Activity 首先,新建了一 ...

  10. 改MySQL的编码方式,解决jdbc MySQL中文乱码问题

    进MySQL安装目录,打开my.ini 这两个地方改成gbk 重启服务