python_函数_迭代器

函数

闭包函数:内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫闭包,被返回出的函数叫闭包函数

def out():
    num = 1
    def inner():
        print(num)
    return inner
res = out()  # res == inner
res()

def out():
    num = 1
    def middle():
        num1 = 2
        print(num)
        def inner():
            print(num1)
        return inner
    return middle
func = out()
res = func()  # func() 相当于 middle()
res()  # res() 相当于 inner()

闭包函数

def out(name):
    def inner():
        print(name,"喜欢在夏天穿短裤")
    return inner
func = out("小明")  # func == inner    : func() == inner()
func()

迭代器:数据量(序列里的数据)过大的情况需要用到迭代器

 for i in range(1,100000000000):
     pass
# iter()  zip(),生成器的方式
# iter() 功能:把可迭代数据对象 转换为迭代器
#        参数: 可迭代的对象(list,str,tuple,set,dict,range())
#       返回值: 迭代器,是可迭代的对象,但可迭代的对象不一定是迭代器

from collections import Iterator,Iterable
str1 = "你好世界"
res = isinstance(str1,Iterable)
print(res)  #True
res1 = isinstance(str1,Iterator)
print(res1)# str1 不是迭代器


list1 = [1,2,3,4,5]
res = isinstance(list1,Iterable)
print(res)  #True
res1 = isinstance(list1,Iterator)
print(res1)# list1 不是迭代器


# 得到一个迭代器
list1 = [1,2,3,4,5,6,7,8,9,0]
res = iter(list1)
print(res,type(res))

# str
str1 = "北京这块热死了"
res = iter(str1)
print(res,type(res))

# 从迭代器里取值:三种
# 注意事项:从迭代器里取值,取走一个就少一个,取空之后再取数据的话,就会报错
# 1.使用next() 函数
# tuple
tuple1 = (1,2,3,4,5,6)
res = iter(tuple1)

print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
# print(next(res))

# 2.使用数据类型转换的方式取值
result = list(res)
print(result)

# 3.使用 for 循环遍历迭代器
for num in res:
    print(num)
result = list(res)
print(result)
print('--------------------')


# 学习一个陌生的函数,学习函数的功能,参数,返回值
# zip(Iterable,Iterable,...)
list1 = ["大锤","二妮","小可爱"]
tuple1 = ("80","40","白给")
res = zip(list1)
print(res,type(res))
# 取值
print(next(res))
print(next(res))
print(next(res))

res1 = isinstance(res,Iterator)
print(res1)
# zip多个参数

list1 = ["大锤","二妮","小可爱","老可爱"]
tuple1 = ("80","40","白给")
res = zip(list1,tuple1)
for name in res:
    print(name)
res1 = dict(res)
print(res1)

# *zip()
# *zip 不能作为开头直接出现,需要和zip 配合使用
list1 = ["大锤","二妮","小可爱","老可爱"]
tuple1 = ("80","40","白给")
res = zip(*zip(list1,tuple1))
for name in res:
    print(name)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值