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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • https://img1.sycdn.imooc.com//5cee1acd0001f22816760964.jpg


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

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

    面向对象编程中的数据封装:

    在类中可以把每一个实例的属性进行封装。不同的实例,拥有相同的数据类型,但是拥有不同的属性。

    查看全部
  • python提供的模块管理工具

    1. easy_install

    2. pip(推荐?,已内置)

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

    • 同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。

    利用ImportError错误,我们经常在Python中动态导入模块:

    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO

    上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。


    查看全部
  • import math

    你可以认为math就是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类

    如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:

    from math import pow, sin, log

    如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突:

    import math, logging
    print math.log(10)   # 调用的是math的log函数logging.log(10, 'something')   # 调用的是logging的log函数

    如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突:

    from math import log
    from logging import log as logger   # logging的log现在变成了loggerprint log(10)   # 调用的是math的loglogger(10, 'import from logging')   # 调用的是logging的log


    查看全部
  • https://img1.sycdn.imooc.com//5cee14ae0001366316700302.jpg

    模块名相同时,把同名模块放入不同的中就可以区分,这是因为同名模块的完整模块名不同。比如两个同名的util.py,有 p1.util、p2.util

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

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

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

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

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


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

    2019-05-29

  • 感觉B、C都是辅助函数(只不过B算是个功能函数),A是真正在文件中有实际意义的函数

    @B(某种作用,比如打印出log或时间)
    def B
        def C
            'blabla..'
            return A(原函数)
        return C
    执行顺序:
    B 
    -> return C 
    -> C 
    ->'blabla'
    -> return A 
    -> A



    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。

    使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。

    要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用:

    def log(f):
        def fn(*args, **kw):
            print 'call ' + f.__name__ + '()...'
            return f(*args, **kw)
        return fn

    现在,对于任意函数,@log 都能正常工作。


    查看全部
  • 在sorted函数中,cmp需要两个参数作比较,而key仅需一个参数

    查看全部
  • 匿名函数 lambda x: f(x)

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

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

    使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码

    查看全部
  • python中返回函数

    Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!

    例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写:

    def f():     print 'call f()...'     # 定义函数g:     def g():         print 'call g()...'     # 返回函数g:     return g

    仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g。由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以返回变量 g,也就是函数 g 本身。

    调用函数 f,我们会得到 f 返回的一个函数:

    >>> x = f()   # 调用f() call f()... >>> x   # 变量x是f()返回的函数: <function g at 0x1037bf320> >>> x()   # x指向函数,因此可以调用 call g()...   # 调用x()就是执行g()函数定义的代码

    请注意区分返回函数和返回值:

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

    返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数:

    def calc_sum(lst):     return sum(lst)

    调用calc_sum()函数时,将立刻计算并得到结果:

    >>> calc_sum([1, 2, 3, 4]) 10

    但是,如果返回一个函数,就可以“延迟计算”:

    def calc_sum(lst):     def lazy_sum():         return sum(lst)     return lazy_sum

    # 调用calc_sum()并没有计算出结果,而是返回函数:

    >>> f = calc_sum([1, 2, 3, 4]) >>> f <function lazy_sum at 0x1037bfaa0>

    # 对返回的函数进行调用时,才计算出结果:

    >>> f() 10

    由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。



    查看全部
  • L2 = sorted(L1, key=lambda x:x.name)

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



    查看全部
  • def f():
        print 'call f()...'    # 定义函数g:
        def g():
            print 'call g()...'    # 返回函数g:
        return g

    仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g。由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以返回变量 g,也就是函数 g 本身。

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

    • 请注意区分返回函数和返回值:

    def myabs():
        return abs   # 返回函数def myabs2(x):
        return abs(x)   # 返回函数调用的结果,返回值是一个数值
    • 返回函数可以把一些计算延迟执行

    如果返回一个函数,就可以“延迟计算”:

    def calc_sum(lst):
        def lazy_sum():
            return sum(lst)
        return lazy_sum

    # 调用calc_sum()并没有计算出结果,而是返回函数:

    >>> f = calc_sum([1, 2, 3, 4])
    >>> f
    <function lazy_sum at 0x1037bfaa0>

    # 对返回的函数进行调用时,才计算出结果:

    >>> f()
    10

    由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。

    查看全部
  • 传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    查看全部

举报

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

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