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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • return 函数的时候不能加括号

    def a():

        xxx

    return a 是对的  return a()  是错误的

    查看全部
  • sorted() 是高阶函数,接受一个比较函数。

    L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))


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

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

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

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


    查看全部
  • def prod(x, y):    return x*yprint reduce(prod, [2, 4, 5, 7, 12])


    查看全部
  • 所有实例都可以访问到它所属的类的属性

    查看全部
  • # -*- coding: utf-8 -*-

    def count():                    #第一步

        lst = []                      #第二步

        for wy in range(1, 5):

                        #第三步        第九步

            def xjw_3(x):

                                #第五步           第十一步

                def xjw_4():

                  

                    return x * x

                                 #第六步           第十二步

                return xjw_4

                          #第四步          第十步

            r = xjw_3(wy)                      #第七步

            

            lst.append(r)                   #第八步           第十三步

        return lst


    f1, f2, f3,f4 = count()

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


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

    2018-11-22

  • **kw: 任意数量key-value值,传递的是一个dict

    查看全部
  • 有几种思路,一个数字对1取模,如果余0就是整数;

    或者让结果和结果的int比较,如果不同 那肯定不是整数;

    查看全部
  • 其实高阶函数就是把一个方法当做参数传入使用;

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回

    这里capitalize() 方法可以直接将内容转换成首字母大写,其余小写;

    使用s[0].upper()+s[1:].lower() 则是用了之前学习的方法,把每一个参数当做一个数组进行拆解转换。学以致用;

    查看全部
    1. 导入模块:import 模块名

      导入模块中的部分函数:from 模块名 import 函数1,函数2

      通过模块名引用函数:模块名.函数名,同时可以避免冲突

      若导入部分函数时函数名发生冲突,可以使用“别名”:from 模块名 import 函数名 as 别名

    2. 动态导入模块:try-except

    3. 安装第三方模块:在cmd窗口中输入:pip install xxx.py

    查看全部
  •  isdir()   目录

     isfile()  文件

    查看全部
  • 偏函数:减少函数的参数个数

    原理:如将字符串看成二进制数转化为十进制--->int(x,2),为了减少参数可以进行函数的定义:

    def int2(x):

         return int(x,2)

    创建偏函数:functools.partial(函数名,要省略的参数),实际上是给参数指定默认值


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

    2018-11-21

    1. 装饰器@decorator,在避免修改原函数代码的基础上,动态增加函数功能

      原理:

      def f1(x):

          return x*x

      def new_f(f):

          def fx(x):

              print('log'+f.__name__+'()')

              return f(x)

          return fx

      f1=new_f(f1)

      print(f1(3))

      调用:python内置的@语法

      @new_f

      def f1(x):

          return x*x

      <---------->f1=new_f(f1)

      作用:

      简化代码,避免每个函数都写重复性代码

      打印日志:@log

      检测性能:@performance

      数据库事务:@transaction

      URL路由:@post('/register')

    2. 编写无参decorator:Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。但是对于参数个数不同的函数,decorator将会报错

      错误示例:

      def new_f(f):

          def fx(x):

              print('log'+f.__name__+'()')

              return f(x)

          return fx

      @new_f

      def f1(x,y):

          return x+y

      print(f1(3,4))#报错

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

      正确示例:

      def new_f(f):

          def fx(*args,**kw):

              print('log'+f.__name__+'()')

              return f(*args,**kw)

          return fx

      @new_f

      def f1(x,y):

          return x+y

      print(f1(3,4))#7

      正确示例2:

      #打印出函数调用的时间

      import time

      from functools import reduce

      def performance(f):

          def logTime(*args,**kw):

              t1=time.time()

              r=f(*args,**kw)

              t2=time.time()

              print(f.__name__+'\'time is',(t2-t1))

              return r

          return logTime

      @performance

      def sum(l):

          return reduce(lambda x,y:x*y,l)

      print(sum(range(1,10000)))

    3. 编写带参decorator:在3层嵌套的decorator定义中,最内层的wrapper引用了最外层的参数prefix

      示例:

      #打印出函数调用的时间+前缀

      import time

      from functools import reduce

      def performance(unit):

          def log(f):

              def logTime(*args,**kw):

                  t1=time.time()

                  r=f(*args,**kw)

                  t2=time.time()

                  print('[%s] the time of calling %s is %s'% (unit,f.__name__,(t2-t1)))

                  return r

              return logTime

          return log

      @performance('ms')

      def factorial(n):

          return reduce(lambda x,y: x*y, range(1, n+1))

      print(factorial(10))

    4. 改善decorator:因为decorator会改变原函数的一些属性如__name__、__doc__等,故应该使用functools中的wraps()函数来使新函数与原函数属性一致,但是原函数参数信息依然无法从新函数那里得到

      示例:

      在新函数上加上  @functools.wraps(f),即可确保属性一致


    查看全部
  • def count():

    fs=[]

    for i in range(1,4):

    def f():

    return i * i

    fs.append(f)

    return fs

    f1,f2,f3 = count()

    函数被调用时,i *i 没有被计算,但是 for  in的循环走到了3


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

    2018-11-21

  • fei

    super(Student,self).__init__()等同于:

    Person.__init__(self)

    都是初始化父类

    查看全部

举报

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

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