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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  •  sorted()函数可对list进行排序

    比较函数,传入两个待比较的元素 x, y,如果需要 x排在 y 的前面,返回 -1,如果需要 x 排在 y 的后面,返回 1。如果如果需要 x 和 y 相等,返回 0。

    查看全部
  • 模块的导入:

    1、import (某包下的).模块名

    2、from 某包 import 模块

    函数的调用:

    1、import 模块

          模块.函数名

    2、from (某包.)模块 import 函数名

         函数直接调用

    https://img1.sycdn.imooc.com//5d3bb6850001c4b603490159.jpg 

    查看全部
  • "利用import ... as ...,还可以动态导入不同名称的模块",

    例如:

    try:
        import json
    except ImportError:
        import simplejson as json

    之所以“动”是因为存在多个模块,调用时会动态选择,但始终用同一个模块名‘如:json’即可访问

    查看全部
  • filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

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

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

    a = '     123'
    a.strip()

    结果: '123'

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

    结果:'123'


    查看全部
  • reduce() 函数会对参数序列中元素进行累积。

    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    语法

    reduce() 函数语法:

    reduce(function, iterable[], initializer)

    参数

    • function -- 函数,有两个参数

    • iterable -- 可迭代对象

    • initializer -- 可选,初始参数

    返回值

    返回函数计算结果。

    实例

    以下实例展示了 reduce() 的使用方法:

    >>>def add(x, y) :            # 两数相加...     return x + y... >>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+515>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数15


    查看全部
  • 返回函数不要引用任何循环变量,或者后续会发生变化的变量。

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

    2019-07-26

  • class Student(object):

        def __init__(self, name, score):

            self.name = name

            self.score = score


        def __str__(self):

            return '(%s: %s)' % (self.name, self.score)


        __repr__ = __str__


        def __cmp__(self, s):

            if self.score < s.score:

                return 1

            elif self.score > s.score:

                return -1

            else:

                if self.name < s.name:

                    return -1

                elif self.name > s.name:

                    return 1

                else:

                    return 0


    L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]

    print sorted(L)

    #以上上Python2中的写法,在Python3中,因为#sorted函数的实现方式完全改变了,所以不再需要#cmp这个方法了。可以使用下面的方式实现:

    from operator import itemgetter, attrgetter    # 导入对list和class的属性引用方法;
    class Student(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def __str__(self):
            return '(%s: %s)' % (self.name, self.score)
        __repr__ = __str__
    
    
    L = [Student('Tim', 99), Student('Bob', 88), Student('Bob', 91), Student('Alice', 99), Student('kob', 88), Student('wave', 88)]
    print("原始的学生数列:",L)
    # L2 = sorted(L, key=itemgetter(1, 0), reverse=True)   # 类不能实现这种方法;根据第二个项(成绩)先倒序,然后如果相同,在根据第一个项(姓名)排序
    
    L3 = sorted(L, key=attrgetter('score', 'name'), reverse=True)  # 先根据score成员倒序排序,再根据name属性倒序排序,
    print("根据属性排序后的学生数列:", L3)
    # 如果要实现按成绩降序,成绩相同时根据姓名升序,如何实现?最简单的办法就是使用二次排序,
    # 因为排序具有顺序保存功能,在排序关键字相同的情况下,会保持原来的顺序;
    
    L11 = sorted(L, key=attrgetter('name'), reverse=False)   # 先根据姓名由小到大排序,升序排序,
    print("根据姓名升序排序后的学生数列:", L11)
    L12 = sorted(L11, key=attrgetter('score'), reverse=True) # 再根据成绩有大到小排序,降序排序,
    print("再根据成绩降序排序后的学生数列:", L12)
    # 比较输出结果,就可以实现根据成绩降序排序,成绩相同按姓名升序排序的结果啦。
    # 再根据成绩降序排序后的学生数列: [(Alice: 99), (Tim: 99), (Bob: 91), (Bob: 88), (kob: 88), (wave: 88)]


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

    2019-07-26

  • class Person(object):


        def __init__(self, name, gender):

            self.name = name

            self.gender = gender


    class Student(Person):


        def __init__(self, name, gender, score):

            super(Student, self).__init__(name, gender)

            self.score = score


        def __str__(self):

            return '(Student: %s, %s, %d)' %(self.name, self.gender, self.score)

        __repr__ = __str__

        


    s = Student('Bob', 'male', 88)

    print s


    # 答案有问题,要求输出<Student:    >:,结果答案里是(Student),把<>改成了()

    查看全部
  • import json


    class Students(object):

        def read(self):

            return  r'["Tim", "Bob", "Alice"]'

            


    s = Students()


    print json.load(s)

    # 只要有一个read方式就可以了。read方法返回的字符串供load解析。

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

    2019-07-26

  • import math

    math.sqrt #平方根

    查看全部
  • 使用@语句的时候会把函数重新绑定一次,相当于完完全全的执行了以下代码,除了返回的新函数,以函数形式返回,不会被执行

    def new_f(f):

        def fn(x):

            新增代码

            return f(x)这里执行了f(x)

        return fn

    f=new_f(f)

    f(x)

    查看全部
  • 任务

    如果将类属性 count 改为私有属性__count,则外部无法读取__score,但可以通过一个类方法获取,请编写类方法获得__count值。

    #是外部无法获取__count,而不是__score;

    class Person(object):
        __count = 0                # 类属性,外部不能访问到的;
    
        @classmethod               # 类方法,对象(实例)不能访问的,出入参数cls, 通过类名访问Person.how_many()
        def how_many(cls):
            return cls.__count
    
        def __init__(self, name):
            self.name = name
            Person.__count += 1
    
    
    print(Person.how_many())
    p1 = Person('Bob')
    print(Person.how_many())


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

    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 序列的字符。

    a = '     123'
    a.strip()

    结果: '123'

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

    结果:'123'


    查看全部
  • # -*- coding: utf-8 -*-

    class Person(object):


        def __init__(self, name, score):

            self.name =  name

            self.__score = score


        def get_grade(self):

            if self.__score >= 90:

                return  "A-优秀"

            elif self.__score >= 60:

                return "B-及格"

            else:

                return "C-不及格"

                

            

    p1 = Person('Bob', 90)

    p2 = Person('Alice', 65)

    p3 = Person('Tim', 48)


    print p1.get_grade()

    print p2.get_grade()

    print p3.get_grade()

    # 要引入代码注释,python2不支持中文字符,要求里又有优秀汉字,所以答案不太合理,不能不要汉字,而是应该引入coding :  utf-8的注释。上面代码在python3中就没有问题,不要注释的。

    查看全部

举报

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

微信扫码,参与3人拼团

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

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