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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
    查看全部
  • reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
    查看全部
  • 3.0的Python中reduce放置于functools里 引入from functools import reduce
    查看全部
  • 函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
    查看全部
  • 函数式编程

    http://img1.sycdn.imooc.com//5e3681f70001243709910467.jpg

    查看全部
  • # 函数本身可以被调用

    def func():

        pass

    print(callable(func))  # True


    # 类本身可以被调用,主要用作生成实例化对象

    class class_test():

        def __init__(self):

            pass

    print(callable(class_test)) # True


    # 类的实例化对象无法被调用

    class class_test():

        def __init__(self):

            pass

    a = class_test()

    print(callable(a))  # False


    # 通过增加__callable__()函数,将类实例化对象变为可调用

    class class_test():

        def __init__(self):

            pass

        def __call__(self):

            pass

    a = class_test()

    print(callable(a))


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

    2020-02-02

  • 使用@property

    https://www.liaoxuefeng.com/wiki/897692888725344/923030547069856

    @property装饰器详解

    http://c.biancheng.net/view/4561.html 


    # 通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号,语法格式如下: 

        # @property

        # def 方法名(self)

        #     代码块

    # 而要想实现修改 方法名的属性值,还需要为其属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下

        # @方法名.setter

        # def 方法名(self, value):

        #     代码块


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

    2020-02-02

  • 这里,如果

    return self.p / self.q

    会显示错误

    raceback (most recent call last):
      File "index.py", line 16, in
        print float(Rational(7, 2))
    TypeError: __float__ returned non-float (type int)

    但是python3里正常。

    查看全部
  • 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。


    是由古希腊数学家欧几里德在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里德算法

    查看全部
  • TypeError:unsupported operand type(s) for /: 'Rational' and 'Rational'

    解决方法:  Python 3.x 中没有定义__div__(),而是有__truediv__() 来替代

    查看全部
  • python中filter()函数

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

    例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:

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

    然后,利用filter()过滤掉偶数:

    filter(is_odd, [1, 4, 6, 7, 9, 12, 17])

    结果:[1, 7, 9, 17]

    利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:

    def is_not_empty(s):     return s and len(s.strip()) > 0 filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])

    结果:['test', 'str', 'END']

    注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

    当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:

    a = '     123' a.strip()

    结果: '123'

    a='\t\t123\r\n' a.strip()

    结果:'123'


    查看全部
  • 这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

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

    2020-02-01

  • 定义Student类时,只需要把额外的属性加上,例如score:

    class Student(Person):
        def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)
            self.score = score

    一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。

    函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。


    查看全部
  • 直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self

    查看全部
  • #求前20项的斐波那契数
    a = 0
    b = 1
    for _ in range(20):
        (a, b) = (b, a + b)
        print(a, end=' ')

    # 其中 '_'  是一个循环标志,也可以用i,j 等其他字母代替,下面的循环中不会用到,起到的是循环此数的作用




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

    2020-02-01

举报

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

微信扫码,参与3人拼团

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

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