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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

    查看全部
  • def add(x,y,f);

        return f(x)+f(y)

    查看全部
  • Python内置的functools可以用来自动化“把原函数的所有必要属性都一个一个复制到新函数上”。原函数签名改成了(*args, **kw),无法获得原函数的原始参数信息。即便采用固定参数来装饰只有一个参数的函数,也可能改变原函数的参数名,因为新函数的参数名始终是 'x',原函数定义的参数名不一定叫 'x'。

    查看全部
  • 要实现带参数的@performance,就需要实现:my_func = performance('ms')(my_func)需要3层嵌套的decorator来实现。

    import time
    def performance(unit):
        def perf_decorator(f):
            def wrapper(*args, **kw):
                t1 = time.time()
                r = f(*args, **kw)
                t2 = time.time()
                t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)
                print 'call %s() in %f %s' % (f.__name__, t, unit)
                return r
            return wrapper
        return perf_decorator
    
    @performance('ms')
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    print factorial(10)


    查看全部
  • 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写f = decorate(f) 这样的代码。

    利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用。

    import time
    def performance(f):
        def fn(*args, **kw):
            t1 = time.time()
            r = f(*args, **kw)
            t2 = time.time()
            print 'call %s() in %fs' % (f.__name__, (t2 - t1))
            return r
        return fn
    
    @performance
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    print factorial(10)


    查看全部
  • 返回的函数并没有立刻执行,而是直到调用了f()才执行。

    返回函数_闭包例子fs.append(f)

    闭包能帮我们做什么

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

    2019-06-29

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

    def is_odd(x):
        return x % 2 == 1

    filter() 接收的函数必须判断出一个数的平方根是否是整数,而 math.sqrt()返回结果是浮点数。

    import math
    def is_sqr(x):
        r = int(math.sqrt(x))
        return r*r==x
    print filter(is_sqr, range(1, 101))


    查看全部
  • 高阶函数:能接收函数做参数的函数

      变量可以指向函数

      函数的参数可以接收变量

      一个函数可以接受另一个函数作为参数

      能接收函数作参数的函数就是高阶函数

    查看全部
  • def count():
        fs = []
        for i in range(1, 4):
            def f(j):
                def g():
                    return j*j
                return g  #f(j)函数返回一个闭包g,g所引用的变量j不是循环变量,因此将正常执行可以避免引用循环变量i
            r=f(i)
            fs.append(r)
        return fs

    f1, f2, f3 = count()
    print f1(), f2(), f3()

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

    2019-06-28

  • __str__()用于显示给用户,而__repr__()用于显示给开发人员。

    查看全部
  • 和Java中的toString(),作用相同

    查看全部
  • import math
    def is_sqr(x):
        r=int(math.sqrt(x))
        return x==r*r #表示一个判断,返回类型为布尔型。值为True或者False
    print filter(is_sqr, range(1, 101))

    查看全部
  • def g(a, b):

        if b == 0:

            return a

        return g(b, a % b)

    这段代码求的是a和b的最大公约数,利用的是辗转相除法!

    查看全部
  • a, b = b, a + b

    记住这个语句,详情解释请参见https://blog.csdn.net/sinat_38486449/article/details/79949711

    该语句的作用是领a=b,b=a+b,但是又有一些不同,在进行b=a+b操作时,这个a的值是没有赋值之前的a的值。

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

    2019-06-27

  • 自定义排序  高阶函数sorted()

    比较函数的定义:

    如果 x 应该排在 y 的前面,返回 -1

    如果 x 应该排在 y 的后面,返回 1

    如果 x 和 y 相等,返回 0

    ---实现倒序排序

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0
    >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]

    sorted()可对字符串排序(按照ASCII码)

    查看全部

举报

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

微信扫码,参与3人拼团

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

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