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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员

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

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


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

    所以对应的匿名函数也应该是一个判断,只能返回True or False

    查看全部
  • 消去 减少

    查看全部
  • 通过转换函数,将一个list转换成另一个list

    查看全部
  • list.sort()是列表中的方法,只能用于列表。

    而sorted可以用于任何可迭代的对象。

    list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()。 

    sorted() 会返回一个新的序列。旧的对象依然存在。

    查看全部
  • 求平方根math.sqrt

    函数名本质是个变量

    变量可作为函数的参数

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


    执行过程:
    当i=1, 执行for循环, 结果返回函数f的函数地址,存在列表fs中的第一个位置上。
    当i=2, 由于fs列表中第一个元素所指的函数中的i是count函数的局部变量,i也指向了2;然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第二个位置上。
    当i=3, 同理,在fs列表第一个和第二个元素所指的函数中的i变量指向了3; 然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第三个位置上。
    所以在调用f1()的时候,函数中的i是指向3的:
      f1():
         return 3*3
    同理f2(), f3()结果都为9
    闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。即包在里面的函数(本例为f()),不要引用外部函数(本例为count())的任何循环变量

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

    2018-09-16

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

    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。


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

    2018-08-26

  • 变量可以指向函数

    函数名其实就是指向函数的变量

    f = abs # f为指向函数abs的变量
    f(-20) # 结果为20

    高阶函数:能接收函数做参数的函数

    查看全部
  • 函数function 与函数式functional(编程范式)

    查看全部
  • <table><tbody><tr class="firstRow"><td><code>def</code> <code>performance(unit):</code><code>#创建带参数的decorator,其中unit为参数的形参</code><code>    </code><code>def</code> <code>perf_decorator(f):</code><code>#定义装饰器函数</code><code>         </code><code>@functools.wraps(f)</code><code>#将原函数f的所有属性复制到新函数wrapper     </code><code>         </code><code>def</code> <code>wrapper(</code><code>*</code><code>args, </code><code>*</code><code>*</code><code>kw):</code><code>#定义装饰函数</code><code>             </code><code>t1 </code><code>=</code> <code>time.time()</code><code>#记录函数开始时间         </code><code>             </code><code>r </code><code>=</code> <code>f(</code><code>*</code><code>args, </code><code>*</code><code>*</code><code>kw)</code><code>#运行函数f            </code><code>             </code><code>t2 </code><code>=</code> <code>time.time()</code><code>#记录函数结束时间            </code><code>             </code><code>t </code><code>=</code> <code>(t2 </code><code>-</code> <code>t1) </code><code>*</code> <code>1000</code> <code>if</code> <code>unit</code><code>=</code><code>=</code><code>'ms'</code> <code>else</code> <code>(t2 </code><code>-</code> <code>t1)</code><code>#计算函数f的运行时间            </code><code>             </code><code>print</code> <code>'call %s() in %f %s'</code> <code>%</code> <code>(f.__name__, t, unit)</code><code>#打印函数f的名称,运行时间以及所带参数的实参            </code><code>             </code><code>return</code> <code>r</code><code>#调用原函数f</code><code>         </code><code>return</code> <code>wrapper</code><code>#返回装饰函数</code><code>    </code><code>return</code> <code>perf_decorator</code><code>#返回装饰器函数</code><p><code><br /></code></p></td></tr></tbody></table><p><br /></p>
    查看全部
  • 默认参数一定要用不可变对象
    要注意定义可变参数和关键字参数的语法:
    *args是可变参数,args接收的是一个tuple;
    **kw是关键字参数,kw接收的是一个dict。
    以及调用函数时如何传入可变参数和关键字参数的语法:
    可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
    关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。

    查看全部
  • 终于弄明白了,装饰器简单的说就是一些函数都要加上相应的额外功能,但是又不想改变原有函数的代码,可以采用高阶函数来完成额外功能的添加。那么当高阶函数设置完成之后,任意函数都可以作为高阶函数后面的参数进行传递调用。只不过还需要在需要添加额外功能的函数前面加上“@高阶函数”。。

    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数:这句话的意思其实就是一个装饰器,也就是说,decorator是一个装饰器,

    2:f.__name__这句话的意思是返回f函数的函数名称
    ,在这里,f是一个形参,传入的是实参'f'函数


    查看全部

举报

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

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