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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 类属性内可以赋初值,类属性的增加应该放在实例属性被创建时调用的__init__函数

    查看全部
  • 首先可以用 type() 函数获取变量的类型,它返回一个 Type 对象:

    >>> type(123)
    <type 'int'>

    其次,可以用 dir() 函数获取变量的所有属性

    dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了:

    >>> getattr(s, 'name')  # 获取name属性'Bob'
    
    >>> setattr(s, 'name', 'Adam')  # 设置新的name属性

    *args和**kw都代表不确定的函数变量,即在函数调用时可以选择传入或者不传入参数,都不影响函数运行。

    其中*args将传入对象当成是元组对待;**kw将传入对象当成字典对待。**kw的作用是在函数调用时,可变参数的key,value值打包成dic,传给kw。因此是kw.iterable()。


    查看全部
  • property:属性

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

    2018-09-26

  • 这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。

    由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可:

    class Book(object):
        def whoAmI(self):
            return 'I am a book'

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


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

    2018-09-26

  • 在一条类继承链上,一个实例可以看成它本身的类型,也可以看成它父亲的类型

    当我们拿到变量 p、s、t 时,可以使用 isinstance 判断类型:

    >>> isinstance(p, Person)
    True    # p是Person类型
    >>> isinstance(p, Student)
    False   # p不是Student类型
    >>> isinstance(p, Teacher)
    False   # p不是Teacher类型


    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    查看全部
  • 调用函数,中间的程序都需要执行,而不仅仅是执行return的部分。

    查看全部
  • return f:只会返回函数,即函数的内存地址

    return f():相当于调用了函数,所以会执行函数,并将执行结果返回。

    查看全部
  • 个人理解:

    在函数中定义一个函数,八成是是为了返回这个函数,否则并不需要定义一个函数,直接在函数中把过程写出来就可以了

    查看全部
  • def myabs():
        return abs   # 返回函数
    def myabs2(x):
        return abs(x)   # 返回函数调用的结果,返回值是一个数值

    查看全部
  • 传统的升序排序,if x<y return -1 ; if x>y return 1 ; return 0;

    降序排序, if x>y return -1 ; if x<y return 1 ; return 0.

    查看全部
  • 动态导入模块:

    try:

        import 目标模块

    如果try里导入模块不成功,导入备选模块

    except ImportError:

        import 备选模块


    try:

        import json

    except ImportError:

        import simplejson as json

    print json.dumps({'python':2.7})


    查看全部
  • import math

    print math.pow(2,0.5)

    print math.pi


    from math import pow,sin,log

    print pow(2,10)

    print sin(3.14)


    import math,logging

    print math.log(10)

    print logging.log(10,'something')


    from math import log

    from logging import log as logger

    print log(10)

    print logger(10,'import from logging')



    import os

    print os.path.isdir(r'system32\cmd.exe')

    print os.path.isfile(r'/data/webroot/resource/python/test.txt')


    查看全部
  • functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

    >>> import functools
    >>> int2 = functools.partial(int, base=2)
    >>> int2('1000000')
    64
    >>> int2('1010101')
    85

    所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。


    查看全部
    0 采集 收起 来源:python中偏函数

    2018-09-24

  • 由于decorator返回的新函数函数名已经不是'f2',而是@log内部定义的'wrapper'。这对于那些依赖函数名的代码就会失效。decorator还改变了函数的__doc__等其它属性。如果要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数,functools可以用来自动化完成这个“复制”的任务

    @functools.wraps(f)

    查看全部

举报

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

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