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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 任务

    请创建包含两个 Person 类的实例的 list,并给两个实例的 name赋值,然后按照 name 进行排序。

    • ?不会了怎么办

    • sorted() 是高阶函数,接受一个比较函数。

      参考代码:

      class Person(object):
          pass
      p1 = Person()
      p1.name = 'Bart'
      
      p2 = Person()
      p2.name = 'Adam'
      
      p3 = Person()
      p3.name = 'Lisa'
      
      L1 = [p1, p2, p3]
      L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))
      
      print L2[0].name
      print L2[1].name
      print L2[2].name


    查看全部
  • python中创建实例属性

    虽然可以通过Person类创建出xiaoming、xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同。在现实世界中,区分xiaoming、xiaohong要依靠他们各自的名字、性别、生日等属性。

    如何让每个实例拥有各自不同的属性?由于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

    实例的属性可以像普通变量一样进行操作:

    xiaohong.grade = xiaohong.grade + 1


    查看全部
  • 任务

    请练习定义Person类,并创建出两个实例,打印实例,再比较两个实例是否相等。

     

    • ?不会了怎么办

    • 要打印实例,直接使用print语句;

      要比较两个实例是否相等,用==操作符。

      参考代码:

      class Person(object):
          pass
      xiaoming = Person()
      xiaohong = Person()
      print xiaoming
      print xiaohong
      print xiaoming == xiaohong


    查看全部
  • python之定义类并创建实例

    在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:

    class Person(object):     pass

    按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。类的继承将在后面的章节讲解,现在我们只需要简单地从object类继承。

    有了Person类的定义,就可以创建出具体的xiaoming、xiaohong等实例。创建实例使用 类名+(),类似函数调用的形式创建:

    xiaoming = Person() xiaohong = Person()


    查看全部
  • (1)格式化输出%f ——保留小数点后面六位有效数字  %.3f,保留3位小数位%e ——保留小数点后面六位有效数字,指数形式输出  %.3e,保留3位小数位,使用科学计数法%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法  %.3g,保留3位有效数字,使用小数或科学计数法 1 >>> print('%f' % 1.11)  # 默认保留6位小数 2 1.110000 3 >>> print('%.1f' % 1.11)  # 取1位小数 4 1.1 5 >>> print('%e' % 1.11)  # 默认6位小数,用科学计数法 6 1.110000e+00 7 >>> print('%.3e' % 1.11)  # 取3位小数,用科学计数法 8 1.110e+00 9 >>> print('%g' % 1111.1111)  # 默认6位有效数字10 1111.1111 >>> print('%.7g' % 1111.1111)  # 取7位有效数字12 1111.11113 >>> print('%.2g' % 1111.1111)  # 取2位有效数字,自动转换为科学计数法14 1.1e+03


    查看全部
  • %o —— oct 八进制
    %d —— dec 十进制
    %x —— hex 十六进制
     >>> print('%o' % 20)
     24
     >>> print('%d' % 20)
     20
     >>> print('%x' % 20)
     14


    查看全部
  • *args和**kw都代表不确定的函数变量,即在函数调用时可以选择传入或者不传入参数,都不影响函数运行。其中*args将传入对象当成是元组对待;**kw将传入对象当成字典对待。**kw的作用是在函数调用时,可变参数的key,value值打包成dic,传给kw。因此是kw.iterable()。


    查看全部
  • dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了:>>> getattr(s, 'name')  # 获取name属性'Bob'
    
    >>> setattr(s, 'name', 'Adam')  # 设置新的name属性>>> s.name
    'Adam'
    
    >>> getattr(s, 'age')  # 获取age属性,但是属性不存在,报错:Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Student' object has no attribute 'age'
    
    >>> getattr(s, 'age', 20)  # 获取age属性,如果属性不存在,就返回默认值20:20


    查看全部
  • 由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可:class Book(object):
        def whoAmI(self):
            return 'I am a book'
    这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。


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

    2019-01-07

  • 函数返回值决定位置

    if  x>y:

    return 1 //说明升序,把大的放到后面

    return -1 //说明降序,把大的放到前面

    if x<y:

    return -1 //说明升序 把大的放到后面

    return 1 //说明降序,把大的放到前面

    查看全部
  • 和属性类似,方法也分实例方法和类方法。在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。要在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 + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。


    查看全部
  • math.sqrt()平方根是一个浮点型,所以需要根据实际情况转换下,题目中为整型所以int(math.sqrt())

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


    查看全部
  • 高阶函数reduce()可以接受一个函数和一个list

    eg:reduce(f,[1,2,3],初始值)

    会依次循环f函数的返回值

    查看全部
  • str.upper()把字符串 str 任意字符变成大写 str.lower()把字符串str任意字符变成小写 str.capitalize()返回一个首字符大写其他字符小写的str的副本 map(f,L)把L相应数据均通过f()函数转换为一个新的list map(func_name,list_obj)高阶函数:返回list_obj中每个元素分别经过func_name作用过的新的list,例子如下: def formate_name(s): return str.capitalize(s) print map(formate_name,['adam','LINDA','jany']) 输出结果为:['Adam','Linda','Jany']

    注:原址:https://www.imooc.com/u/3086170/notepad/317


    查看全部

举报

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

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