python基础练习2

# 一边循环一边计算的机制,称为生成器
# 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值