python进阶,迭代器和生成器,函数式编程,闭包,装饰器

l=[1,2,3,4]
it = iter(l)
print(next(it))
print(next(it))
print(next(it))
print(next(it))

#while循环
l=[1,2,3,4]
len = len (l)
i=0
it = iter(l)
while i= self.end:
            raise StopIteration
        self.current += 1
        return self.current-1
it=MyIter(1,2)
for i in it:
    print(i)

#生成器:
#生成器函数:yield 表达式
def myrange(stop):
    x=0
    while x 
  
#函数式编程
#核心特征:1.纯函数2.不可变类型3.高阶函数
#纯函数:函数按照传入的参数值进行运算,但不修改变量的值
#高阶函数:可以使用一个函数名作为参数传入的函数
#使用高阶函数进行编程的模式叫做函数式编程

#1.纯函数:f(x)+f(y)
#2.不可变数据:x,y
#3.函数名作为参数传递:f
def add(x,y,f):
    return f(x) + f(y)
def myPower(x):
    return x**2

s=add(1,5,abs)
print(s)
s1=add(1,5,myPower)
print(s1)

def f(x):
    return x**2
r=map(f,[1,2,3,4,5,6])
print(list(r))

#将函数换成lambda表达式
it=map(lambda x: x**2,[1,2,3,4,5,6])
print(list(it))


from functools import reduce
def g(x,y):
    return x*10+y
r=reduce(g,[1,3,5,7,9])
print(r)

#在列表中删除偶数,输出余数
def h(x):
    return x%2==1
r=filter(h,[1,2,3,4,9])
print(list(r))

#按绝对值大小排序
it =sorted([1,2,-3,4,-5,6],key=abs,reverse=True)
print(it)
#求最大值
m=max([1,2,3,-1,-3,-5],key=abs)
print(m)
#闭包的实例
def give_yasuiqian(money):
    def child_buy(obj, m):
        nonlocal money
        if money > m:
            money -= m
            print('买', obj, '花了', m, '元, 剩余', money, '元')
        else:
            print("买", obj, '失败')
    return child_buy
cb = give_yasuiqian(1000)
cb('变形金刚', 200)
cb('漫画三国', 100)
cb('手机', 1300)

#装饰器在不修改原函数的前提下,能添加一些额外的功能
#带参数的装饰器
def outer(func):
    def inner(*args,**kwargs):
        return func(*args,**kwargs)
    return inner

@outer
def sum(a,b):
    return a+b
print(sum(3,4))

@outer
def add(a,b,c):
    return a+b+c
print(add(3,4,3))

你可能感兴趣的:(python,开发语言)