为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • self和r分别表示r1和r2

    查看全部
  • import time
    
    def call_fun_time(f):
        def fn(*args, **kw):
            print args
            print kw
            print 'call ' + f.__name__ + '() in ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            return f(*args, **kw)
        return fn
    
    @call_fun_time
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    
    @call_fun_time
    def add_double(x,y,fsum):
        return x + y + fsum([x,y])
    
    print add_double(1,3,sum)
    print factorial(5)


    查看全部
  • 通过高阶函数返回新函数

    查看全部
  • python内置的@语法就是为了简化装饰器调用,

    查看全部
  • 输出格式为:函数(预置函数名,list)

    查看全部
  • python 中的偏函数

    当参数较多时,贱货调用者的负担。

    functools.partial:可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。

    查看全部
    0 采集 收起 来源:python中偏函数

    2019-08-07

  • def is_not_empty(s):

        return s and len(s.strip()) > 0


    print filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])


    print filter(lambda s: s and len(s.strip()) > 0,  ['test', None, '', 'str', '  ', 'END'])


    查看全部
  • 第一次循环i=1,r=f(1),而f(1)返回的是1*1,然后再把这个r=f(i) append到空序列fs中,在赋值给f1,f2,f3.


    查看全部
    0 采集 收起 来源:python中闭包

    2019-08-07

  • # 希望一次返回3个函数,分别计算1x1,2x2,3x3:def count():
        fs = []
        for i in range(1, 4):
            def f():
                 return i*i
            fs.append(f)
        return fs
    
    f1, f2, f3 = count()

    def count():

        fs = []

        for i in range(1, 4):

            def cal(j):

                def fcal():

                    return j*j

                return fcal

            fs.append(cal(i))

        return fs


    f1, f2, f3 = count()

    print f1(), f2(), f3()


    查看全部
    0 采集 收起 来源:python中闭包

    2019-08-07

  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    查看全部
  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变

    查看全部
    0 采集 收起 来源:python中闭包

    2019-08-07

  • def cal(x,y):

        return x*y

    # def calc_prod(lst):

    #     def cal_prod():

    #         result = 1

    #         for v in lst:

    #             result = result * v

    #         return result

    #     return cal_prod

    def calc_prod(lst):

        def cal_prod():

            return reduce(cal,lst)

        return cal_prod


    f = calc_prod([1, 2, 3, 4])


    print f()


    查看全部
  • 判断x是否为平方数,

    可以用math.sqrt(x) -int(math.sqrt(x)) ==0来判断

    或者用math.sqrt(x) % 1==0来判断

    查看全部
  • python3中不能直接这样输入,要引用这个模块,

    from functools import reduce
    def prod(x,y):
        return x*y
    print(reduce(prod,[2,4,5,7,12]))
    输出结果为3360
    当然也可以直接运用lambda。
    form functools import reduce
    lis=[2,4,5,7,12]
    print(reduce(lambda x,y:x*y,lis))
    输出结果还是3360



    查看全部
  • def calc_sum(lst):
        def lazy_sum():
            print 'call lazy_sum'
            return sum(lst)
        return lazy_sum
    
    
    f = calc_sum([1, 2, 3, 4])
    print f
    print f()


    <function lazy_sum at 0x00000000025D1518>

    call lazy_sum

    10


    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!