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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 需要回头再复习一遍

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

    2018-07-16

  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

    正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

    因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。



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

    2018-07-16

  • 装饰器还是不太懂

    查看全部
  • def is_not_empty(s):
        return s and len(s.strip()) > 0
    filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])

    结果:['test', 'str', 'END']

    题目解释:筛选出非空字符串,且长度>0的

    原理:(1)python与运算:只有两个布尔值都为 True 时,计算结果才为 

    TrueTrue and True   # ==> True

    True and False   # ==> False

    False and True   # ==> False

    False and False   # ==> False

    (2)Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True。


    因为s and len(s.strip()) 的结果大于0所以len(s.strip())为true所以s 为True['test'None, '', 'str', '  ', 'END']True-False-False-True-True-True >>> s='  '>>> len(s.strip())0所以符合条件的,长度大于0 且又是字符串只有['test''str''END']>>> [len(s) for in  ['test''str''END'] ]>>>[433# 长度分别为len(s.strip()) > 0

    查看全部
  • import time, functools
    def performance(unit):
       def perf_decorator(f):
           @functools.wraps(f)
           def wrapper(*args, **kw):
               t1 = time.time()
               r = f(*args, **kw)
               t2 = time.time()
               t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)
               print 'call %s() in %f %s' % (f.__name__, t, unit)
               return r
           return wrapper
       return perf_decorator

    @performance('ms')
    def factorial(n):
       return reduce(lambda x,y: x*y, range(1, n+1))
    print factorial.__name__


    查看全部
  • 函数调用不需要传入self,但是方法调用需要传入self


    查看全部
  • 闭包还挺复杂的,像答案这样的,也可以不用闭包直接算(如果没有特殊要求的话)

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

    2018-07-16

  • def log_time(f):

        pass

    @log_time

    log_time本质上是一个高级函数。

    def performace(unit):

        def log_time(f):

            pass

        return log_time

    @performance('ms')

    不同的地方在于这个('ms')。
    其实这句performance('ms')和普通的函数f(x)是一样的,此时的performance可以看作参数为'ms',返回值
    为上面的log_time的一个新函数。
    其实我们还可以写成:

        def log_time(f,unit):

            pass

        f1 = log_time(f1, 'ms')

    不过这种写法没有@的形式,在以后写程序的时候会显得很啰嗦
    查看全部
  •  s是指list里的一个元素而不是list列表, map会遍历所有元素,所以s[0]并不是指'adam'个元素,而是元素'adam'里的第一个元素a

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

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

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


    查看全部
  • count 设为私有 __count, 这样实例变量在外部无法修改 __count ,但是在内部依然可以访问和修改

    查看全部
  • lambda p1,p2: cmp(p1.name, p2.name)

    实例的属性可以用来做排序参数,返回实例本身的顺序。

    查看全部
  • markkkkk

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

    2018-07-15

  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

    要确保引用的局部变量在函数返回后不能变


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

    2018-07-15

  • 严格遵守缩进的问题,否则会报缩进不匹配的错。

    学会使用reduce函数简化代码

    查看全部

举报

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

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