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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 要在class中定义类方法,需要这么写:

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

    通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。

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


    查看全部
  • 要在class中定义类方法,需要这么写:

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

    通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。

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


    查看全部
  • 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法:

    import types
    def fn_get_grade(self):
        if self.score >= 80:
            return 'A'
        if self.score >= 60:
            return 'B'
        return 'C'
    
    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
    
    p1 = Person('Bob', 90)p1.get_grade = types.MethodType(fn_get_grade, p1, Person)print p1.get_grade()# => Ap2 = Person('Alice', 65)
    print p2.get_grade()# ERROR: AttributeError: 'Person' object has no attribute 'get_grade'
    # 因为p2实例并没有绑定get_grade


    查看全部
  • 'abc'.upper()

    >>>'ABC'

    #把字母变成大写

    'ABC'.lower()

    >>>'abc'

    #把字母变成小写


    查看全部
  • # 参考网页  https://www.cnblogs.com/mylu/p/11028556.html


    查看全部
  • 反反复复付付付付付

    查看全部
  • math包提供了求平方根的函数sqrt()

    需要先引用它

    import math

    math.sqrt()


    查看全部
  • #解法二  参考网页 https://www.cnblogs.com/yssjun/p/9887239.html
    def count():
        fs = []
        for i in range(1,4):
            func = lambda _i = i : _i * _i
            fs.append(func)
        return fs
                                
     f1, f2, f3 = count()
     print(f1(), f2(), f3())


        

            



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

    2019-12-25

  • 函数式编程的特点

    把计算视为函数而非指令

    纯函数式编程:不需要变量,没有副作用,测试简单

    支持高阶函数,代码简洁。

    python支持的函数式编程

    不是纯函数式编程:允许有变量

    支持高阶函数:函数也可以作为变量传入

    支持闭包:有了闭包就能返回函数

    有限度地支持匿名函数。

     

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

        变量可以指向函数 

        函数名其实就是指向函数的变量

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

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


    查看全部
  • def calc_prod(lst):
        def prod():
            z=1
            for i in lst:
                z=z*i
            return z
        return prod
    f=calc_prod([1, 2, 3, 4])
    
    print(f) # 仅仅返回函数。 或在命令窗口输入f;或不用f,直接输入calc_prod([1, 2, 3, 4])
    print(f())# 调用函数,返回函数计算结果. 或在命令窗口输入f(),但需借用f才可输出计算结果。


    查看全部
  • %取余

    math.sqrt(x)%1==0  对x开根号取余数进行比较

    查看全部
  • str = 'runoob'
    # 把所有字符中的小写字母转换成大写字母
    print(str.upper()) 
    
    # 把所有字符中的大写字母转换成小写字母
    print(str.lower())

    Python capitalize()将字符串的第一个字母变成大写,其他字母变小写。对于 8 位字节编码需要根据本地环境。

    查看全部
  • 开根号函数 math.sqrt()


    查看全部
  • #错误案例
    def cmp_ignore_case(s1, s2):
        if s1[0] > v2[0]: # 两个字符串比较大小,自动按照首字母比较,不需再取首字母
            return -1   
        if s1[0] < v2[0]:  # 此if语句是逆序排序,顺序排序需调整
            return 1   
        return 0
    print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)


    查看全部

举报

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

微信扫码,参与3人拼团

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

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