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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 带参数的log函数首先返回一个decorator函数,再让这个decorator函数接收my_func并返回新函数

    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。

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

    要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用

    查看全部
  • 因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。

    class Person(object):


        __count = 0


        @classmethod

        def how_many(cls):

            return cls.__count

            

            

        def __init__(self, name):

            self.name = name

            Person.__count = Person.__count + 1


    print Person.how_many()


    p1 = Person('Bob')


    print Person.how_many()


    p1 = Person('Bob2')


    print Person.how_many()


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

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

    例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]

    如果希望把list的每个元素都作平方,就可以用map()函数:

    54c8a7e40001327303410245.png

    因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:

    def f(x):     return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

    输出结果:

    [1, 4, 9, 10, 25, 36, 49, 64, 81]

    注意:map()函数不改变原有的 list,而是返回一个新的 list。

    利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。

    由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。


    查看全部
  • 计算平方根可以用函数:

    >>> math.sqrt(2)
    1.4142...


    查看全部
  • python把函数作为参数

    在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数:

    def add(x, y, f):     return f(x) + f(y)

    如果传入abs作为参数f的值:

    add(-5, 9, abs)

    根据函数的定义,函数执行的代码实际上是:

    abs(-5) + abs(9)

    由于参数 x, y 和 f 都可以任意传入,如果 f 传入其他函数,就可以得到不同的返回值。


    查看全部
  • 倒装句?变量 :条件


    查看全部
  • 比较1,2结果输出相同,不同在于:return lambda : i*i,返回的是函数;return i*i,返回是数值。因此,函数对应f1(),数值对应f1.

    1:

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

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


    2:

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

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


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

    2018-12-17

  • pythine3中

    from functools import reduce

    查看全部
  • python函数式编程:

    高阶函数

    闭包

    匿名函数

    装饰器


    查看全部
    0 采集 收起 来源:课程总结

    2018-12-17

  • 在Python中,函数其实是一个对象。

    由于 f 可以被调用,所以,f 被称为可调用对象。

    所有的函数都是可调用对象。

    一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()


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

    2018-12-17

  • 由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如,给xiaoming这个实例加上name、gender和birth属性: xiaoming = Person() xiaoming.name = 'Xiao Ming' xiaoming.gender = 'Male' xiaoming.birth = '1990-1-1' 给xiaohong加上的属性不一定要和xiaoming相同: xiaohong = Person() xiaohong.name = 'Xiao Hong' xiaohong.school = 'No. 1 High School' xiaohong.grade = 2
    查看全部
  • 如果要限制添加的属性,例如,Student类只允许添加 name、genderscore 这3个属性,就可以利用Python的一个特殊的__slots__来实现。

    class Student(object):
        __slots__ = ('name', 'gender', 'score')#__slots__是指一个类允许的属性列表
        def __init__(self, name, gender, score):
            self.name = name
            self.gender = gender                                                 self.score = score

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

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

    2018-12-17

  • 可以用装饰器函数把方法“装饰”成属性使用。

    @property,只读属性

     @score.setter 是@property装饰后的副产品


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

    2018-12-17

  • def gcd(a, b):
        if b == 0:
            return a
        return gcd(b, a % b)

    #求a和b的最大公约数

    查看全部

举报

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

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