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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • try:

        print Person.__count

    except AttributeError:

        print("attirbuteerror")


    查看全部
  • 类属性和实例属性名字冲突,会先去找实例属性对应的值,如果找不到再去找类属性内的值。

    查看全部
  • path 是os的一部分,引用os 和引用os.path都可以使用path下面的方法,但是引用os.path的不可以用os下除了path外的其他分支方法

    查看全部
  •   @functools.wraps(f)#将原函数f的所有属性复制到新函数wrapper  

    查看全部
  • 当执行factorial(10)时,会先去执行注解,也就是@performance('ms')。因为带参数,所以会先执行def performance(unit),把字符串ms传到unit,然后会再把被注解的函数作为参数执行def perf_decorator(f),至此注解部分就已经执行完毕了。接下来就是执行函数def factorial(n),也就是def wrapper(*args, **kw),然后该计时的计时,在计时的过程中就会执行真正的函数f(*args, **kw),并在最后return返回值,也就是print打印出的东西,流程就是这样。

    但是当执行def factorial(n)即factorial(10)时,实际上执行的函数已经不是factorial函数了,被替换成了wrapper函数,可以在factorial函数内打印下函数名:


    查看全部
  • 结合之前学过的闭包的内容,闭包实际上就是指两层函数,一层包着一层,外面那层传参数给里面那层用,这样做的意义是,要想用里层的函数,只能通过外层,不能直接使用,也就起到了保护的作用。装饰器在闭包的基础上,增加了实际的意义,比如用外层的函数辅助输出一些内容,像print一些日志出来,或者计算内部函数调用的时间,说到底是为内层函数服务的。

    而且装饰器不是为某一个函数服务的,而是为所有函数服务的,是一个通用的东西。里层的函数该怎么运行怎么运行,装饰器只是协助实现了某些辅助的功能,这也会它为什么叫装饰器,只是达到某种装饰的功能。



    查看全部
  • filter()第一个参数是写一个函数返回true和false的功能,是false才过滤掉.应该使用逻辑运算符号


    查看全部
  • lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。

    查看全部
  • cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

    查看全部
  • 由于i定义在内部函数f的外面,可能会出现闭包现象

    def count():

        fs = []

        for i in range(1, 4):

            def f(j=i):  **************在取一个j变量即可

                return j * j

            fs.append(f)

        return fs


    f1, f2, f3 = count()

    print f1(), f2(), f3()


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

    2019-09-24

  • print (f1(),f2(),f3())

    第一步:执行代码“f1, f2, f3 = count()”赋值号的右边,调用count()函数,开始执行count()函数的内部命令

    第二步:创建一个局部变量fs

    第三步:开始执行for循环遍历列表[1,2,3],i 赋值1,然后执行 fs.append(f) 代码,得到[f],注意这时候并不需要执行函数f(),因为没有调用

    第四步:继续执行for循环遍历列表[1,2,3],i 赋值2,然后执行 fs.append(f) 代码,得到[f,f],注意这时候并不需要执行函数f(),因为没有调用

    第五步:继续执行for循环遍历列表[1,2,3],i 赋值3,然后执行 fs.append(f) 代码,得到[f,f,f],注意这时候并不需要执行函数f(),因为没有调用

    第六步:执行代码“f1, f2, f3 = count()”赋值号的左边,将fs(即[f,f,f])赋值给f1,f2,f3,使用到了高级序列赋值语句模式

    第七步:执行 print (f1(),f2(),f3()) 代码

    第八步:调用函数f(),执行return i*i,此时的i的地址值指向的是外层函数中i的地址,i的值应为for之前的for循环重新赋值为3,所以return 3*3


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

    2019-09-24

  • reduce(f,lst,t)  f指向要调用的函数  ,lst是接收的list, t是给f函数中第一个元素赋值

    reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    reduce中f函数的实现是必须传入两个参数,比如f(x,y) ,t就是给f(x,y)中的x赋值的,x=t.


    查看全部
  • upper()字符串中字母由小写变为大写

    lower()字符串中字母由大写变为小写

    capitalize()字符串中字母首字母大写其余小写

    title()字符串中字母每个单词的首字母大写其余小写


    查看全部
  • 记得调用数学函数时应该加入:import math

    然后平方根的三种表达方法别忘记。。。

    第一种调用math函数库    math.sqrt

    第二种调用内置函数库      pow(x,0.5)

    第三种直接利用**            x**0.5


    查看全部
  • 内层函数引用了外层函数的变量,然后返回内层函数的情况,称为闭包。其特点是返回的函数还引用了外层函数的局部变量。

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

    2019-09-24

举报

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

微信扫码,参与3人拼团

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

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