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_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学习笔记_函数

    一开始学习函数式编程语言就被告知函数式编程语言是一种“定义式”的语言,而不是一种命令式的语言,在学习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. 手机端页面自适应:rem布局

    rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = ...

  2. sublime安装和汉化

    对程序员来说,在不同的平台下有不同的IDE,网上很多教程都是使用DW,以致DW大名鼎鼎.其实,还有一些我们不为熟知的,却超级牛X的编辑器,我相信Sublime Text就是其中之一. 官方下载地址:h ...

  3. css绝对定位、相对定位和文档流的那些事

    前言 接触html.和css时间也不短了,但每次用div+css布局的时候心里还是有点儿虚,有时候干脆就直接用table算了,很多时候用div会出现些不可预料的问题,虽然花费一定时间能够解决,但总不是 ...

  4. android开发MD5加密工具类(一)

    MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...

  5. 如何:控制命名空间前缀 (C#) (LINQ to XML)

    Visual Studio 2010 本主题介绍在序列化 XML 树时如何控制命名空间前缀. 在很多情况下,不需要控制命名空间前缀. 但是,某些 XML 编程工具需要命名空间前缀的特定控制. 例如,您 ...

  6. synchronized 关键字

    synchronized 多用于并发不高并且需要单线程运行的地方.比如你有一个A方法,你在方法上加了synchronized修饰.那么两个人同时去调用这个方法的时候不是并行的,是抢占的,谁先抢到资源谁 ...

  7. Linux下进程的文件访问权限

    本文转自 http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...

  8. java中数组与List相互转换的方法

    1.List转换成为数组.(这里的List是实体是ArrayList) 调用ArrayList的toArray方法. toArray public <T> T[] toArray(T[] ...

  9. 手机开机提示SD卡受损

    手机开机提示SD卡受损,手机不显示内存卡,有人会选择换新卡或者格式化内存卡,如果刚好木有备份,内存卡上的珍藏丢失了多心痛啊.其实,我们可以通过电脑救活提示受损的内存卡,前后不超过5分钟... 方法:1 ...

  10. 习惯使用断言Assert

    一直在给党做项目,我们这些可怜兮兮的学生都没太多时间安排自己的活动了,写个blog都要在中午休息的时间. 项目用的是.NET,本来也想分享一些干货点的东西,但博客园里的前辈把这类文章已经分享泛滥了,想 ...