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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 在定义class,function,method时 可以用pass来完成一个“完整”的定义,无需return,无需表达式等等,解释器将其视为正确的代码块。

    查看全部
  • 任务中为什么用and不用if?

    filter(f,list),filter根据f返回值,也就是bool(true,false)筛选list重组,也就是保证f的返回值是一个bool而不是其他数据类型。

    查看全部
  • 随风迎

    Python— isinstance用法说明

    作用:来判断一个对象是否是一个已知的类型;

    其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(True or flase)。

    若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。

    查看全部
  • map()是Python内置的高阶函数,它接受一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。

    注意:map()函数不改变原有的 list,而是返回一个新的 list。利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。

    由于list包含的元素可以是任何类型,因此,map()可以处理包含任意类型的 list。


    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数

    匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

    查看全部
  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    def count():
        fs = []
        for i in range(1, 4):
            def f(j):
                def g():
                    return j*j
                return g
            r = f(i)
            fs.append(r)
        return fs
    f1, f2, f3 = count()
    print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2018-09-18

  • ?????

    查看全部
  • def count():

        fs = []

        for i in range(1,4):

            def f():

                return i*i

            fs.append(f)

        return fs

    f1, f2, f3 = count()

    print f1()




    def count():

        fs = []

        for i in range(1, 4):

            def f(j):

                def g():

                    return j*j

                return g

            r = f(i)

            fs.append(r)

        return fs


    f1, f2, f3 = count()

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


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

    2018-09-18

  • def f():

        print 'call f()...'

        def g():

            print 'call g()...'

        return g

    x = f()

    x()


    def calc_sum(lst):

        return sum(lst)

    print calc_sum([1,2,3,4])


    def calc_sum(lst):

        def lazy_sum():

            return sum(lst)

        return lazy_sum

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

    print f()




    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()


    查看全部
  • 任务

    改进一下前面定义的斐波那契数列:

    class Fib(object):
        ???

    请加一个__call__方法,让调用更简单:

    >>> f = Fib()
    >>> print f(10)
    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
    • ?不会了怎么办

    • 要正确定义参数:__call__(self, num)


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

    2018-09-18

  • 假设Person类通过__slots__定义了name和gender,请在派生类Student中通过__slots__继续添加score的定义,使Student类可以实现name、gender和score 3个属性。

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

    2018-09-18

  • 还是不太懂,需要再返回看三遍!

    查看全部
  • print sorted([36,5,12,9,21])


    def reversed_cmp(x,y):

        if x > y:

            return -1

        if x < y:

            return 1

        return 0

    print sorted([36,5,12,9,21],reversed_cmp)


    print sorted(['bob','about','Zoo','Credit'])


    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)


    查看全部
  • __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。

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

    2018-09-18

  • 如果没有定义set方法,就不能对“属性”赋值,这时,就可以创建一个只读“属性”。

    请给Student类加一个grade属性,根据 score 计算 A(>=80)、B、C(<60)。


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

    2018-09-18

举报

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

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