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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • import types
    
    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def fn_get_grade(self):
            if self.score >= 80:
                return 'A'
            if self.score >= 60:
                return 'B'
            return 'C'
    p1 = Person('Bob', 90)
    print (p1.fn_get_grade())


    查看全部
  • p1.get_grade 返回的是一个函数对象,这个函数是一个绑定到实例的函数

    p1.get_grade() 才是方法调用

    实例方法也是属性,可以动态地添加到实例上,只需用types.MethodType() 把一个函数变为一个方法


    查看全部
  • title()将首字母转为大写,非首字母转为小写,如果字符串中没有需要转换的字符则原封不动的返回,生成新的字符串,不改变原字符; Lower() Upper()
    查看全部
  • filter()函数是Python 内置的另一个有用的高阶函数, filter()函数接收一个函数f 和 一个list, 这个函数f 的作用是对每个元素进行判断, 返回Ture 或 False, filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list.


    请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:

    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


    def is_sqr(x):

        r = int(math.sqrt(x))

        return r*r ==x


    print filter(is_sqr, range(1, 101))


    查看全部
  • reduce()函数也是Python内置的一个高阶函数, reduce()函数接收的参数和map()函数, 一个函数f, 一个list, 但行为和map()不同, reduce()传入函数f 必须接收两个参数, reduce()对 list的每个元素反复调用函数f, 并返回最终结果

    def prod(x, y):

        return x * y 

    print reduce(prod,[2, 4, 5, 7, 12])



    educe()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

    reduce(f, [1, 3, 5, 7, 9], 100)
    结果将变为125,因为第一轮计算是:
    计算初始值和第一个元素:f(100, 1),结果为101。



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

    def name(s):

        return s[0].upper() + s[1:].lower()   #x.spper(),转换大写, x.lower()转换小写

    print map(name,['adam','LISA','barT'])


    查看全部
  • 定义实例方法:

    实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的。

    get_name(self) 就是一个实例方法,它的第一个参数是self。__init__(self, name)其实也可看做是一个特殊的实例方法。

    调用实例方法必须在实例上调用

    class Person(object):
    
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name

    实例方法内部,可访问所有实例属性

    外部访问私有属性,可以通过方法调用获得

    查看全部
  • def cmp_ignore_case(s1, s2):

        n1 = s1.upper()

        n2 = s2.upper()

        if n1 < n2:

            return -1

        if n1 > n2:

            return 1

        else:

            return 0


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


    查看全部
  • 类属性、实例属性

    当实例属性和类属性重名时,实例属性优先级高

    在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。

    类属性count改为__count,外部无法访问,内部可以访问

    例:

    class Person(object):


        __count = 0


        def __init__(self, name):

            self.name = name

            Person.__count = Person.__count + 1

            print Person.__count #内部可访问


    p1 = Person('Bob')

    p2 = Person('Alice')


    print Person.__count  #外部不可访问


    查看全部
  • 创建类属性

    类是模板,而实例则是根据类创建的对象。

    实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    类属性可动态添加和修改

    class Person(object):

        count = 0

        def __init__(self,name):

            Person.count = Person.count + 1

            self.name = name


    p1 = Person('Bob')

    print Person.count


    p2 = Person('Alice')

    print Person.count


    查看全部
  • 添加属性可以 **kw ,也可以用__slots__

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

    2019-08-13

  • Rational(object)  __init__(self,p,q) 表示p/q,前边分子后边分母,答案里多加了个找最大公约数的函数

    查看全部
  • Rational(object) 表示有理数,就是表示成分数了

    查看全部
  • class Person(object):
        __count = 0
        def __init__(self, name):
            self.name=name
            Person.__count=Person.__count+1
        @classmethod
        def how_many(cls):
            return cls.__count
    print Person.how_many()
    p1 = Person('Bob')
    print Person.how_many()

    可以通过@classmethod把实例方法转成类方法

    查看全部
  • 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()
    # => A
    p2 = Person('Alice', 65)
    print p2.get_grade()
    # ERROR: AttributeError: 'Person' object has no attribute 'get_grade'
    # 因为p2实例并没有绑定get_grade

    查看全部

举报

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

微信扫码,参与3人拼团

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

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