我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

Python_白李娜_20210121

[复制链接]
つ兜兜里没糖学员认证 发表于 2021-1-21 20:30:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、整理笔记17:30-20:001.生成器
#实现生成器
t = (x*x for x in range(10))
print(t)
#使用next()方法,可以获取生成器中的下一个元素
print(next(t))
print(next(t))
print(next(t))
#如果生成器中的元素已经取完了,则抛出StopIteration异常
print(next(t))
print ('---------------------------------')
g =  (x*x for x in range(10))
for i in g:
    print(i)
'''
----利用函数实现生成器
'''
#利用生成器生成自然数序列
import time
def nature():
    n = 1
    while True:
        #print (n)
        yield n ''' return n :1.返回n的值 2.立即结束函数
                    yield n: 1.返回n的值 2.立即暂停函数的执行        
                '''
        n += 1
        #time.sleep(1)
g = nature()
for e in g:
    print(e)
    time.sleep(1)
print(next(g))



2.高阶函数
#函数名本质上就是一个指向该函数的变量
print(abs(-9))
print(abs)
f = abs
print (f(-5))
abs = -7
print(abs)
#函数作为参数传入
#一个函数A可以接受另一个函数B作为参数,我们把这个函数A称为高阶函数
def add(x,y,f):
    return f(x)+f(y)

print(add(-3,-4,f)) #值为7

def g(x):
    return x*x
print (add(3,4,g))

#map()函数   映射
#reduce()/filter()
#把一个列表映射成另一个列表
r = map(g,[1,2,3,4,5])
print (list(r))

'''
函数作为返回值
'''
def s(*args):
    ss = 0
    for arg in args:
        ss += arg
    return ss
print(s(1,2,3,4))
#lazy_s()定义了函数s(),而s()函数中又引用了外部函数lazy_s()的参数args
# 当lazy_s()函数返回函数s(),相关的餐参数和变量都已经保存到返回的函数中
#我们把这种程序结构称为闭包closure
def lazy_s(*args):
    #定义函数
    def s():
        ss = 0
        for arg in args:
            ss += arg
        return ss
    return s
h = lazy_s(s(1,2,3,4))
print(h())


3.匿名函数lambda
def g(x):
    return x*x
r = map(g,[1,2,3,4,5])
print(list(r))

r = map(lambda x:x*x*x,[1,2,3,4,5])
print(list(r))

f = lambda x,y:x+y
print(f(2,3))
#将下面的函数用匿名函数重写
def is_odd(n):
    return n%2 == 1
print(is_odd(3))

r = lambda n:n%2 == 1
print(r(4))


4.装饰器direction
#创建一个装饰器
def log(func):
    #func :将要被装饰的函数
    def wrapper(*args,**kw):
           print('调用函数:%s'%func.__name__)
           return func(*args,**kw)
    return wrapper

import time
@log  #now = log(now)   
def now():
    print('调用函数:%s'%now.__name__)
    print(time.strftime('%Y-%m-%d %H:%M:%S'))
now()
f = log(now)
f()

# print(now.__name__)
# print(f.__name__)
# now.__name__ ='现在'
# print(f.__name__)

import functools

#可以传参的装饰器
def log2(text):
    def decorator(func):
        @functools.wraps(functools)
        def wrapper(*args,**kw):
            #wrapper.__name__=func.__name__
            print('%s:%s'%(text,func.__name__))
            return func(*args,**kw)
        return wrapper
    return decorator

@log2('执行函数') #now2 = log2('执行函数')(now2)
def now2():
    #print('调用函数:%s'%now.__name__)
    print(time.strftime('%Y-%m-%d %H:%M:%S'))
now2()
print(now2.__name__)


回复

使用道具 举报

关注0

粉丝0

帖子30

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备2025058934号-2 )

版权所有 © 西安菁英教育科技有限公司 2023-2026