您的位置:首页 > 编程语言 > Python开发

python_函数_迭代器

2019-05-26 22:04 80 查看

函数

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

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: