函数的进阶(二)

迭代器

迭代器:不是函数,只是一个称呼,表示更新换代的意思,如同软件的本版更新,基于软件的上一个版本

可迭代对象

python中一切皆为对象

可迭代对象: 含有__iter__方法叫做可迭代对象 --> 除了数字类型都是可迭代对象 --> 可迭代对象使用__iter__变成迭代器

s = 1
it = [1,2,3]
dic = {'a':2,'b':3}
tup = (1,)
se = {1}
fw = open(''test.txt', 'a+', encoding='utf8')

          
除了数字类型外,其他数据类型都是可迭代对象,都有__inter__

迭代器对象

迭代器对象: 含有__iter__和__next__方法叫做迭代器对象 --> 只有文件时迭代器对象 --> 迭代器使用__iter__依然是迭代器

为什么要有迭代器:提供了一种不需要索引取值的手段

三元表达式

x = 10
y = 20

print(x) if x > y else print(y)
# 条件成立走这里 if 条件 else 条件不成立走这里

列表推导式


lt = [i for i in range(10)]
print(lt)

字典生成器

lt1 = ['a','b','c']
lt2 = [1,2,3]


dic = {k:v for k v in zip(li1,lt2)}
print(dic)

生成器生成方式

g = (i for in range(5))

print(g)

# 生成器表达式:  看成老母鸡,节省内存空间,用就下蛋
# 列表推导式: 看成一筐鸡蛋,非常占用内存空间

生成器

  1. 本质是一个迭代器 ---> 生成器: 本质就是迭代器,生成器就是一个自定义的迭代器

  2. 含有yield关键字的函数叫生成器

def ge()
	yield 3
    yield 4
 
g = ge()

print(g.__next__)
print(g.__next__)
  
    
 # yield的特性:
 # 1.暂停函数
 # 2.通过next取值

 # return的特性
 # 1. 终止函数
 # 2.通过调用函数拿到值

递归函数

递归:函数a内部直接调用函数a本身‘

  1. 函数内部调用函数自己
  2. 必须要有退出条件
  3. 递归必须要有规律
count = 0
def a():
    global count
    count+=1
    print(count)
    if count==5:
    	return
    a()
a()
def age(x):
    if x == 0:
        return 20
    x -= 1
    return age(x) + 2


res = age(6)
print(res)  # 32
posted @ 2019-09-24 17:16  鸿鸿1  阅读(138)  评论(0编辑  收藏  举报