为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 对于装饰器的理解,可以展开成高阶函数的调用

    例如:

    @log('DEBUG')

    def my_func()

        pass

    分析:

    my_func=log('DEBUG')(my_func)

    进一步可以分解为:

    log_decorator=log('DEBUG')           #log函数就是一个装饰器

    my_func=log_decorator(my_func)   #my_func函数是一个以my_func本身为参数调用装饰器log_decorator函数的函数

    所以装饰器函数相当于是:

    log_decorator=log('DEBUG')

    @log_decorator

    def my_func()

        pass

    查看全部
  • gcd(b, a%b)这tm是欧几里得算法。即两个数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数

    查看全部
  •  def __add__(self, r):
            return Rational(self.p * r.q + self.q * r.p, self.q * r.q)

    self.q*r.q  表示两个分数相加时, 经过通分得到的 分母 (未考虑最小公倍数)

    self.p *r.q + self.q*r.p  表示两个分数 通分后的 分子相加

    查看全部
  • 这里 p是分子,q是分母 。这里实现的是 两个分数的加法(保证是有理数)

    查看全部
  • 要想让 类 像list一样可以获取有多少个元素,同样要用len()函数,但要让len()函数正常工作,类必须提供一个特殊方法__len__(),它返回元素的个数

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

    2018-03-23

  • 按照分数从高到低,分数相同则按名字排序

    def __cmp__(self, s):

            if self.score == s.score:

                if self.name < s.name:   #名字排序,从小到大

                    return -1

                elif self.name > s.name:

                    return 1

                else:

                    return 0

            elif self.score < s.score:   #分数排序,从大到小

                return 1

            else :

                return -1


    查看全部
    1 采集 收起 来源:python中 __cmp__

    2018-03-23

  • def count():
        fs = []
        for i in range(1, 4):
            def f(j):
                def g():
                    return j*j
                return g
            fs.append(f(i))
        return fs

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

    输出1 4 9

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

    2018-03-23

  • 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

    先计算头两个元素:f(1, 3),结果为4;
    再把结果和第3个元素计算:f(4, 5),结果为9;
    再把结果和第4个元素计算:f(9, 7),结果为16;
    再把结果和第5个元素计算:f(16, 9),结果为25;
    由于没有更多的元素了,计算结束,返回结果25。


    查看全部
  •     return 1 if s1.upper()>s2.upper() else -1

    查看全部
  • return math.sqrt(x) % 1 == 0

    查看全部
  • def calc_prod(lst):
        def lazy_prod():
            def f(x, y):
                return x * y
            return reduce(f, lst, 1)
        return lazy_prod
    f = calc_prod([1, 2, 3, 4])
    print f()


    查看全部
  • def calc_prod(lst):

        def prod():

            return reduce(lambda x, y : x * y, lst)

        return prod


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

    print f()


    查看全部
  • 对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。 输入:['bob', 'about', 'Zoo', 'Credit'] 输出:['about', 'bob', 'Credit', 'Zoo'] 方案一:对于比较函数cmp_ignore_case(s1, s2),要忽略大小写比较,就是先把两个字符串都变成大写(或者都变成小写),再比较。 参考代码: def cmp_ignore_case(s1, s2):    u1 = s1.upper()    u2 = s2.upper()    if u1 < u2:        return -1    if u1 > u2:        return 1    return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case) 方案二: def cmp_ignore_case(s1, s2):    return cmp(s1.lower(), s2.lower()) print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

    查看全部
  • <p><span>map()函数不改变原有的 list,而是返回一个新的 list。</span></p>
    查看全部
  • <p><span>map()</span><span>是 Python 内置的高阶函数,它接收一个</span><span>函数 f</span><span> 和一个 </span><span>list</span><span>,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。</span></p>
    查看全部

举报

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

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