函数

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()不断调用)

转载于:https://www.cnblogs.com/marshuai/p/10700810.html

notes for lxf(二)相关推荐

  1. notes for lxf(五)

    类和实例的绑定方法和属性 实例绑定 obj.func = func obj.func(obj, &argv)  obj.func = MethodType(func, obj) 第一个参数是方 ...

  2. notes for lxf(四)

    类名首字母通常大写 创建实例 类名 +() __init__方法 创建实例时把一些属性绑上去 __init__方法第一参数永远是self 表示船舰的实例本身 类是实例的模板 实例是一个一个具体的对象 ...

  3. notes for lxf(三)

    纯函数式编程是没有变量的,只要输入确定输出就确定 指高度抽象的编程范式 特点 函数本身可以作为参数传入 或者允许返回一个函数 Higher-order function 一个函数可以接收另一个函数作为 ...

  4. notes for lxf(一)

    python代码不能用word和windows自带的记事本保存 word保存的不是纯文本文件 记事本会在文件开始的地方加上特殊字符(UTF-8 BOM) 交互模式启动了解释器 直接运行.py文件是一次 ...

  5. JAVA代码实现扫码购带圆图二维码生成

    JAVA代码生成带图片的圆形二维码 需求背景 技术方案 程序设计 代码实现 实现效果 过程中遇到的问题 写在最后 需求背景 针对常规的新媒体运营渠道,经常要推出一些福利商品,只能通过自媒体的渠道进行购 ...

  6. PACKAGE BODY APPS.CUX_LXF_INSERT 编译错误

    A66 包里定义的 P_P_Bonus与包的实现中P_Bonus名字不一样,包的定义以及实现必须保证名字,参数完全一致,修改一下即可. 查看全文 http://www.taodudu.cc/news/ ...

  7. 启明云端分享|ESP32 AT 相关资源从哪里获得?以及经常会遇到的AT相关问题

    ESP32 AT 相关资源从哪里获得? ESP32 AT bin 文件:AT 固件. ESP32 AT 文档:AT 指令集. 可以基于乐鑫官方的 esp-at 工程开发更多的 AT 指令. 经常会遇到 ...

  8. (转载)DevExpress ASPxGridView 使用文档六:模板

    转载请注明出处:http://surfsky.cnblogs.com/ --------------------------------------------------------- -- ASP ...

  9. Win10找不到便签怎么办 Win10找不到便签解决方法

    Win10找不到便签怎么办 方法一: 查看windows系统版本,在运行窗口中,输入 "winver",查看windows系统版本号.(本人系统版本为win10 2016 周年版) ...

最新文章

  1. 成功解决tensorflow.keras: AttributeError: ‘str‘ object has no attribute ‘decode‘
  2. Android_安卓为按钮控件绑定事件的五种方式
  3. 微型计算机用什么评价判断,环评中常用评价等级的判定
  4. python网络编程自学_五分钟搞定Python网络编程实现TCP和UDP连接
  5. 计算机网络(八)-数据链路层-帧封装
  6. ~~队列(数据结构)(附模板题 AcWing 829. 模拟队列)
  7. js怎么给div加滑动条 vue给弹出层加滑动条(一分钟学会用js加滚动条)
  8. html5svg在线编辑器,HTML5 SVG简介
  9. python毕业设计作品基于django框架外卖点餐系统毕设成品(6)开题答辩PPT
  10. php公物管理系统,开源客户管理系统 fly-crm
  11. 车载T- BOX全国产化电子元件推荐方案
  12. 关卡 动画 蓝图 运行_动画蓝图 - Unreal Engine
  13. R三星463无线网卡驱动,声音驱动程序,FN快捷键驱动,Easy_Display_Manager
  14. Cuda相关的函数数
  15. laravel——实现Email形式的邮箱验证注册以及登陆功能
  16. 记录一些面试相关的刁难题
  17. 保研夏令营-南大、哈工、天大、中山、北理
  18. c语言生日快乐爱心,C语言 生日快乐
  19. 中国软件行业协会成立25周年庆典 《程序员》荣获杰出传媒奖
  20. C#_DataTable简介

热门文章

  1. 关于谷歌浏览器最新版出现的视频下载按钮禁掉解决方案
  2. 一个飞鸽传书2007进入后就可以不断的顺着链接爬行
  3. App Store Connect 更改已上架App主语言
  4. U盘超级加密(U盘,移动硬盘,共享文件夹加密软件)
  5. 校园O2O商铺平台-店铺注册DAO层与图片处理
  6. linux系统下监控录像软件,Linux系统资源监控-Linux系统资源监控工具(LinuxSysMonitor)下载-西西软件下载...
  7. linux 利用win网络共享上网
  8. 加入2b2t服务器显示过期,我的世界:2B2T服务器罪魁祸首是他,为一己之私毁掉了整个服务器...
  9. bzoj 4245: [ONTAK2015]OR-XOR
  10. CEC设备连接和寻址