我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

Python_樊江飞_20210121

[复制链接]
皮皮虾学员认证 发表于 2021-1-21 20:18:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
'''生成器generator'''
# l = [x*x for x in range(11)]
# print(l)
t = (x*x for x in range(10))
print(t)
#使用next()方法,可以获取生成式中的下一个元素
print(next(t))
print(next(t))
#如果生成器中的元素已经取完了,则抛出stopIteration异常
print('----------------------------------------------------------')
g = (x*x for x in range(10))

for i in g:
    print(i)

'''利用函数实现生成器'''
import time
def nature():
    n = 1
    while True:
        '''return n 1、返回n的值;2、立即结束函数
           yield  n 1、返回n的值;2、立即暂停函数的执行
        '''
        # print(n)
        yield n
        n += 1
        time.sleep(1)

g = nature()
print(next(g))
for e in g:
    print(e)
    time.sleep(1)
    yield n
print(next(g))

'''
1 1 2 3 5 8 13
a = 0   b = 1   a+b=1; a = b b =a+b
a = 1   b = 1   a+b=2: a=b   b =a+b
a = 2   b = 3   a+b=3; a=b   b =a+b  
a = 3   b = 5   a+b=8; a=b   b=a+b

'''
print('----------------------------------------------------------')
  def fib():
    a,b = 0,1
    while True:
        yield b
        t = a
        a = b
        b = t+b
        #先计算赋值符号的右边,然后再赋值
        a,b = b,a+b
        time.sleep(1)

# f = fib()
# print(f)
# print(fib)
# for i in f:
#     print(i)
#     time.sleep(0.5)


from collections.abc import Iterable
print(isinstance(f,Iterable))
'''
高阶函数

函数名本质上就是一个指向该函数的变量
'''
print(abs(-5))
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))
print(add(-3,4,f))
print(add(3,-4,f))
def g(x):
    return x*x
print(add(3,4,g))
print(add(-3,4,g))
print(add(3,5,g))

#map()函数   高阶函数,g是一个新的函数,打出列表。函数是一个参数传入取值。
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,5,6))
print(s(1,3,5,7,9))
'''
lazy_s()函数中定义了内部函数是s(),而s()函数中又引用了外部函数lazy_s()的参数arges
当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(1,2,3,4)
print(h)
print(h())'''
def s ():
        ss = 0
        for arg in (1,2,3,4):
            ss += arg
        return ss
print(h)
print(h())
'''匿名函数lambda 表达式
匿名函数一般用于处理简单函数
'''
def g(x):
    return x*x

r = map(g,[1,2,3,4,5,6])
print(list(r))

r = map(lambda x:x*x*x,[1,2,3,4,5,6])
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))
print(is_odd(2))

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

回复

使用道具 举报

关注0

粉丝0

帖子25

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

客服电话:17792550360

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

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

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