day8_python学习笔记_chapter11_函数

时间:2021-09-01 14:03:59

1. 返回对象的数目   python实际返回的对象

  0 -> None ; 1 -> object ; >1 -> tuple

2. 内部/内嵌函数:如果内部函数的定义包含了再外部函数里定义的对象的引用, 内部函数会变成被称为闭包的特别之物。

3. 装饰器  ------------待补充

4. 非关键字可变长参数(元组):

  def tupleVarArgs(arg1, arg2, *theRest):
      print arg1, arg2
      for w in theRest:
          print w
  tupleVarArgs('aaa', 'bbb', 'ccc', 'ddd')

5. 关键字变量参数(字典)

  def dictVarArgs(arg1, arg2, **theRest):
      print arg1, arg2
      for w in theRest.keys():
          print  'the args is %s: %s' % (w, str(theRest[w]))     
  dictVarArgs('aaa', 'bbb', c='ccc', d = 'ddd', e='eee', men=('f', 'fff'))

6. 匿名函数,lambda

  def add(x, y): return x + y <==> a = lambda x, y : x + y

7. 函数式编程内建函数:apply(func[nkw][kw]) 用可选的参数来调用func

  filter(func, seq), 调用一个布尔函数func来迭代遍历每个seq中的元素;返回一个使func返回值为true的元素序列

  fiter()函数的实现:

  def filter(boo_func, seq):

    filtered_seq = []

    for eachItem in seq:

      if bool_func(eachItem):

        filtered_seq.append(eachItem)

    return filtered_seq

8. map(func, seq) ,将函数func作用到seq中的每个元素上,返回每个元素调用过func() 的seq

  map() 函数的实现:

  def map(func, seq):

    mapped_sqe=[]

    for eachItem in seq:

      mapped_seq.append(func(eachItem))

    return mapped_seq

9. redunce(func, seq), 他通过去除序列的头两个元素, 将他们传入二元函数来获得一个单一的值来实现。然后又用这个值和序列的下一个元素来获得又一个值,然  后继续直到整个序列的内容都遍历完毕以及最后的结果被计算出来为止。

  reduce(func, [1, 2, 3]) 等价于 func(func(1, 2), 3)

  reduce(func, seq, init=None)的实现:

  def reduce(bin_func, seq, init=None):

    Iseq = list(seq)

    if init is None:

      res = lseq.pop(0)

    else:

      res = init

    for item in lseq:

      res = bin_func(res, item)

    return res

10.  偏函数: 函数固化第一个参数为固定参数,

  from functools import partial ; from operator import add, mul

      eg: add3 = partial(add, 3) ; add(x)  ==== add(x, 3)

         mul5 = partial(mul, 5); mul5(x) ==== mul(x, 5)

      将二进制转化为int:   baseTwo = partial(int, base=2); baseTwo('1000')

11. 变量作用于:局部,全局,global语句

12. 闭包: 如果在一个内部函数中, 对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包。

  def counter(st=0):
    count=[st]
    def incr():
        count[0] += 1
        return count[0]
    return incr

>>> count = counter(5)
>>> print count()

>>> 6

day8_python学习笔记_chapter11_函数的更多相关文章

  1. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  2. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  3. matlab学习笔记13&lowbar;1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...

  4. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. haskell学习笔记&lowbar;函数

    一开始学习函数式编程语言就被告知函数式编程语言是一种“定义式”的语言,而不是一种命令式的语言,在学习haskell的函数语法时,此感觉更加强烈,haskell的函数定义倾向于一种类似C++里面的swi ...

  6. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  7. es6学习笔记-async函数

    1 前情摘要 前段时间时间进行项目开发,需求安排不是很合理,导致一直高强度的加班工作,这一个月不是常说的996,简直是936,还好熬过来了.在此期间不是刚学会了es6的promise,在项目有用到pr ...

  8. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  9. javascript学习笔记--迭代函数

    概要 这里的迭代函数指的是对数组对象的操作方法,js数组共有五个迭代函数:every.fifter.forEach.map.some. 1.every every方法,返回值为Boolean类型,tr ...

随机推荐

  1. PetaPoco修改

    else if (type == typeof(decimal)) return (decimal)pk == default(decimal); public override void PreEx ...

  2. coroutine in c 备忘

    coroutine: stackless和stackful jmp 基于switch的trick: http://www.chiark.greenend.org.uk/~sgtatham/corout ...

  3. C&plus;&plus;的构造函数总结

    构造函数是C++的一个很基础的知识点,在平时编程的时候,相信大家都很熟悉,虽然比较基础,但是细究下来,还是有不少细节需要注意.这篇文章主要总结C++构造函数需要注意一些细节,一方面,可以帮助下大家巩固 ...

  4. JVM指令集介绍

    转载自:http://glutinit.iteye.com/blog/1263446 延伸参考 JVM接收参数和方法调用 void spin() {    int   i;    for (i = 0 ...

  5. JS&lowbar;单个或多个文件上传&lowbar;不支持单独修改

    A-From表单直接填写提交地址,不过干预: 1. 单文件上传 最简单的文件上传,是单文件上传,form标签中加入enctype="multipart/form-data",for ...

  6. hdu 6070 Dirt Ratio 线段树&plus;二分

    Dirt Ratio Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Spe ...

  7. art虚拟机介绍

    Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司.ART模式与Dalvik模式最大的不 ...

  8. Mongoose 分页查询优化、获取数据总长度

    无论是传统网页还是 ajax api,我们都不得不进行数据分页,一来节省带宽二来提升页面响应速度.作为一个数据完备的 web 应用,做好分页功能能极大提升用户体验. 简单的分页查询 在 mongoos ...

  9. Android NDK 导出独立工具链

    传统方式调试 NDK 开发的程序比较麻烦,先要编译成 JNI,又要导出 java接口,还要再写一个 java 工程,改一个地方又要连续改几处,这样效率是很低的.最频繁使用的关键工作路径(编译/调试环节 ...

  10. PHP 根据两点的经纬度计算距离

    /** * @name 根据经纬度确定两点的距离[地理位置] * @author tbj * @param float $lat 纬度值 * @param float $lng 经度值 * @date ...