函数

abs()绝对值 max()返回最大值

raise 后接异常类 引发异常

函数返回多个值其实就是返回一个tuple

函数默认返回None

如果有必要检查参数类型用isinstance() type()查看数据类型

定义函数——确定函数名和参数个数——检查参数数据类型——return返回

定义默认参数必须指向不变对象

可变参数*args表示args接收的是一个tuple 关键字参数**kw表示kw接收的是一个dict 命名关键字参数需要一个特殊分隔符*必须传入参数名 如果有可变参数就不用加*

函数参数组合顺序 位置参数 默认参数 可变参数 命名关键字参数 关键字参数

对于任意函数都可以用func(*args, **kw)形式调用它 无论参数是如何定义的

在函数内部可以调用其它函数 如果一个函数调用的是自身本身 这个函数就是递归函数

函数调用通过栈实现 每当进入一个函数调用 栈就会增加一层栈帧 每当函数返回 栈就会减一层栈帧 递归调用次数过多会导致栈溢出

解决递归栈溢出的方法是通过尾递归优化 在函数返回时调用自身本身 使用递归本身无论调用多少次 都只占用一个栈帧

递归可以用逆向思维想想看(汉诺塔)

切片

L[-1]取最后一个元素 L[start:last:step]前闭后开 L[:]复制一个list

不要试图在循环中修改列表

迭代dict 默认情况下迭代的是key for i in d.values()迭代value for k, v in d.items()迭代key和value

isinstance(object, collections.Iterable/Iterator)判读是否为可迭代对象/迭代器

enumerate()用于一个将可遍历的数据对象返回索引-数据

列表生成式[i for i in range(10) if i > 3]  [m + n for m in 'abc' for n in 'xyz']

generator生成器 一边循环一边计算的机制

定义一 只需要把列表生成式的[]改成()就创建了一个generator 和list的区别仅在于最外层的[]和()

定义二 如果一个函数中包含yield关键字那么这个函数就不是简单的函数而是一个generator

next(generator)获得生成器的下一个返回值 或for i in generator:

函数是顺序执行 遇到return语句或最后一行(最后是return None) 函数就返回 generator的函数 遇到yield就返回 下次执行从yield开始

迭代器 可以被next()函数调用并不断返回下一个值的对象成为迭代器 Iterator 可以直接用于for循环的对象称为可迭代对象Iterable

生成器都是迭代器 但是list dict str是Iterable不是Iterator 可以使用iter()函数变成Iterator

像list str dict都是有限的序列 而Iterator表示的是一个不知道序列长度的数据流 只能通过next()实现按需计算下一个数据 Iterator是惰性的

for循环本质上是不断通过next()函数实现的(先把可迭代对象用iter()变成迭代器 再用next()不断调用)

最新文章

  1. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
  2. Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
  3. Maven中手动引用第三方jar包
  4. Word或者Excel中怎么把 "空格" 替换成 "换行 "
  5. [LeetCode]Divide Two Integer
  6. 【Java】JTable组件的构造函数和设置列宽
  7. Solr和IK分词器的整合
  8. C#进程间通讯技术-整理。
  9. WebApi2官网学习记录---批量处理HTTP Message
  10. hdu3038 How Many Answers Are Wrong【基础种类并查集】
  11. linux学习历程
  12. Delphi中取整函数Round的Bug解决
  13. Android初级教程:如何自定义一个状态选择器
  14. ECMAScript 6 入门简介
  15. 第二阶段——个人工作总结DAY06
  16. SQL Server 调优系列基础篇 - 常用运算符总结
  17. 屏蔽百度及其广告的部分Host
  18. 管道通信Pipe
  19. WinForm的Chart图形控件
  20. LNMP架构三

热门文章

  1. Oracle DB 总结(SQL)
  2. BeautifulSoup爬网页图片
  3. windows bat 批处理 执行 for 循环无法执行?
  4. 3D Slicer中文教程(六)—调用matlab函数(MatlabBridge使用方法)
  5. TV TimeShift和PVR的区别
  6. 【easy】257. Binary Tree Paths 二叉树找到所有路径
  7. dijistra
  8. -bash: yum: command not found
  9. [HTTP]POST报文中Content-Type对正文解析的影响
  10. js 本地缓存localStorage