我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

python_焦新瑞_20210121

[复制链接]
8487学员认证 发表于 2021-1-21 21:00:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、课堂笔记(18:00-19:00)1.
'''生成器generator'''
#eg  类似分页   不直接把所有数据
#保存数据的算法
#-------------生成器
a = (x*x for x in range(4))
#使用next()方法,可以获取生成式中的下一个元素
# print(next(a))
#如果生成器中的元素取完了,则抛出stopIteration异常
# print(next(a))
#--------利用函数实现生成器

import time
# def nature():
#     n = 1
#     while True:
#         # print(n)
#         #return(作用:返回一个值;终止函数)
#         #yield(作用:返回一个值;暂停函数的执行)
#         yield n
#         n += 1
#         #休眠1s
#         # time.sleep(1)
# nature()
from collections.abc import Iterable
#判断某种对象obj的什么类型,true false
print(isinstance(g,Iterable))


2
'''高阶函数'''
#1.一个函数a可以接收另一个函数b作为参数,我们把这个函数a称为高阶函数
#2.函数作为参数传入
#函数名本质上就是一个指向该函数的变量
#------------函数作为参数插入
#----------map()函数  映射(系统提供的高阶函数)
#可以将一个列表映射成另外的新列表
#类似的高阶函数reduce、filter
# def g(x):
#     return x.lower()
# r = map(g,['aaA','uDEu'])
# print(list(r))
# def s(*args):
#     ss = 0
#     for arg in args:
#         ss += arg
#     return ss
# print(s(2,4,6,8))

#---------函数作为返回值
#闭包(内外数据的引用):数据的安全性


3
'''匿名函数 lambda表达式'''
#一般处理简单的问题
r = map(lambda x:x*x,[1,2,3,4])
print(list(r))
#可以传多个参数
f = lambda x,y:x+y
print(f(2,4))
def is_odd(n):
    return n%2 == 1
s = lambda n:n%2 == 1
print(s(3))
print(s(2))


4
'''装饰器Decorator'''
#在代码运行期间动态增加功能的方式,称为装饰器
#------创建一个装饰器
def log(func):
    '''
    将要被装饰的参数
    '''
    def wrapper(*args,**kw):
        print(func.__name__)
        return func(*args,**kw)
    return wrapper
import time
#---------调用装饰器  
# @log    #调用装饰器  
#(上述的调用 相当于 下面调用(1行))
# dd = log(now)   #调用log
# dd()  #调用wrapper
@log  # now = log(now)
def now():
    # print(time.asctime())
    print(time.strftime('%Y-%m-%d %H:%M:%S '))
# f =now
# f()
# now.__name__ = 'old'
# print(now.__name__)
# dd = log(now)   #调用log
# dd()




二、难点(重点)练习(19:00-20:00)
1.使用生成器构造一个自然数序列1,2,3,4,.......
def aa():
    n = 1
    while True:
        yield n
        n += 1
g = aa()
for e in g:
    print(e)
    time.sleep(1)


2.求和(2,4,6,8)
def lazy_s(*args):
    def s():
        ss = 0
        for arg in args:
            ss += arg
        return ss
    return s
aa = lazy_s(2,4,6,8)
print(aa())



三、完成作业(20:30-22:00)
1.计数器
使用闭包实现 计数器函数

def counts():
    def numbers():
        n = 1
        while True:
            yield n
            n += 1
    for i in numbers():
        aa = input('aaa:')
        if aa == 'y':
            print(i)
        elif aa == 'n':
            print('end...')
            print(i-1)
            break
        elif aa != 'y' or aa == ' ' or aa != 'n':
            print('errer....')
            break
        i += 1
    return numbers
dd = counts()
dd()


2.['tom','MIKE','Tony'] -> ['Tom','Mike','Tony']
def g(x):
    return x[0].upper()+x[1:].lower()
r = map(g,['tom','mIKE','Tony'])
print(list(r))


3.1,1,2,3,5,8,13.........
def bb():
    a = 0
    b = 1
    t = 0
    while True:
        yield b

        a,b = b,a+b

h = bb()
for e in h:
    print(e)
    time.sleep(1)


4.实现一个计时器装饰器


回复

使用道具 举报

关注0

粉丝0

帖子26

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

客服电话:17792550360

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

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

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