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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 要定义关键字参数,使用 **kw;

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。

    for k, v in kw.iteritems():
                setattr(self, k, v)


    查看全部
  • try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。

    try:

        import json

    except:

        import simplejson as json

    先倒入json,如果没有在倒入simplejson


        

    查看全部
  • 包相当于目录(文件夹)

    包下必须有_init_.py 这个文件,此文件为空文件,加入这个文件后,编辑器才会把这个目录理解为包

    查看全部
  • def is_not_empty(s):

        return s and len(s.strip()) > 0

     改为匿名函数:

    lambda s : s and len(s.strip()) > 0

    查看全部
  • 匿名函数 lambda x: x * x 实际上就是:

    def f(x):
        return x * x

    关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。

    匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

    查看全部
  • 高阶函数定义

    http://img1.sycdn.imooc.com//5e480c55000188d608940469.jpg

    查看全部
  • 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。

    查看全部
  • Python提供了open()函数来打开一个磁盘文件,并返回 File 对象。File对象有一个read()方法可以读取文件内容:

    例如,从文件读取内容并解析为JSON结果:

    import json
    f = open('/path/to/file.json', 'r')
    print json.load(f)

    由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()

    这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查参数类型,只要方法存在,参数正确,就可以调用。

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

    2020-02-15

  • 类也可以绑定属性,每个实例都可以调用它。但要给类属性赋值时只能用类.属性。不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性,该实例的实例属性和类属性同名,实例属性优先级高,实例.属性访问时返回实例属性。

    查看全部
  • 如果一个属性由双下划线开头(__),该属性就无法被外部访问.如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。

    查看全部
  • 要定义关键字参数,使用 **kw

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性

    class Person(object):
        def __init__(self, name, gender, birth, **kw): #后续创建实例时可额外加任意个kw=args
            self.name = name
            self.gender = gender
            self.birth = birth
            for k, v in kw.iteritems():
                setattr(self, k, v)
    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student',prejob='student')

    查看全部
  • 类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:

    class Person(object):
        pass

    类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的

    创建实例使用 类名+(),类似函数调用的形式创建

    xiaoming = Person()
    xiaohong = Person()

    查看全部
  • python中 __call__

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

    >>> f = abs >>> f.__name__ 'abs' >>> f(-123) 123

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

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

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

    我们把 Person 类变成一个可调用对象:

    class Person(object):     def __init__(self, name, gender):         self.name = name         self.gender = gender     def __call__(self, friend):         print 'My name is %s...' % self.name         print 'My friend is %s...' % friend

    现在可以对 Person 实例直接调用:

    >>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim...

    单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

    任务

    改进一下前面定义的斐波那契数列:

    class Fib(object):     ???

    请加一个__call__方法,让调用更简单:


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

    2020-02-13

  • python中的<em>args和</em><em>kw:<br/><code>*args</code>:表示就是将实参中按照位置传值,多余的值都给args,且以</em><em>元组</em><em>的方式呈现<br/><code>**kw</code>:表示就是形参中按照关键字传值,多余的值都给kw,且以</em><em>字典</em>的方式呈现
    查看全部
  • 但是,Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数

    要在Python 2.7中引入3.x的除法规则,导入__future__division

    >>> from __future__ import division
    >>> print 10 / 3
    3.3333333333333335

    查看全部

举报

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

微信扫码,参与3人拼团

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

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