python基础练习2

来源:互联网 发布:东南大学没落 知乎 编辑:程序博客网 时间:2024/06/07 00:15
# 一边循环一边计算的机制,称为生成器# g=(x*x for x in range(10))# print g# print g.next()# for n in g:#     print n# 斐波拉切数列# def fib(max):#     n,a,b=0,0,1#     while n<max:#         print b#         a,b=b,a+b#         n=n+1# 如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator# def fib(max):#     n,a,b=0,0,1#     while n<max:#         yield b#         a,b=b,a+b#         n=n+1# o=fib(3)# o.next()# o.next()# o.next()# for n in fib(6):#     print n# map map()函数接收两个参数,一个是函数,一个是序列# def f(x):#     return x*x# print map(f,[1,2,3,4,5,6,7])# reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算# def add(x,y):#     return x+y# print reduce(add,[1,3,5,7,9])# def fn(x,y):#     return x*10+y# def char2num(s):#     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]# print reduce(fn,map(char2num,'2134'))# 用lambda函数进一步简化成# def char2num(s):#     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]# def str2int(s):#     return reduce(lambda x,y: x*10+y, map(char2num, s))# filter# def is_odd(n):#     return n%2==1# print filter(is_odd,[1,2,3,4,5])# sorted# print sorted([36, 5, 12, 9, 21])# 闭包 返回函数不要引用任何循环变量,或者后续会发生变化的变量。# def lazy_sum(*args):#     def sum():#         ax=0#         for n in args:#             ax=ax+n#         return ax#     return sum# f =  lazy_sum(1,2,3,4,6)# print f()# def count():#     fs=[]#     for i in range(1,4):#         def f(j):#             def g():#                 return j*j#             return g#         fs.append(f(i))#     return fs# f1,f2,f3=count()# print f1() #执行到return就返回不再执行# print f2()# print f3()# 函数对象有一个__name__属性,可以拿到函数的名字:# 装饰器# def log(func):#     def wrapper(*args,**kw):#         print 'call %s():',func.__name__#         return func(*args,**kw)#     return wrapper# 把@log放到now()函数的定义处,相当于执行了语句:now = log(now)# @log# def now():#     print '2015-9-1'# now()# 简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
0 0
原创粉丝点击