notes for lxf(二)
函数
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()不断调用)
notes for lxf(二)的更多相关文章
- notes for lxf(五)
类和实例的绑定方法和属性 实例绑定 obj.func = func obj.func(obj, &argv) obj.func = MethodType(func, obj) 第一个参数是方 ...
- notes for lxf(四)
类名首字母通常大写 创建实例 类名 +() __init__方法 创建实例时把一些属性绑上去 __init__方法第一参数永远是self 表示船舰的实例本身 类是实例的模板 实例是一个一个具体的对象 ...
- notes for lxf(三)
纯函数式编程是没有变量的,只要输入确定输出就确定 指高度抽象的编程范式 特点 函数本身可以作为参数传入 或者允许返回一个函数 Higher-order function 一个函数可以接收另一个函数作为 ...
- notes for lxf(一)
python代码不能用word和windows自带的记事本保存 word保存的不是纯文本文件 记事本会在文件开始的地方加上特殊字符(UTF-8 BOM) 交互模式启动了解释器 直接运行.py文件是一次 ...
- Salesforce LWC学习(二十七) File Upload
本篇参考: https://developer.salesforce.com/docs/component-library/bundle/lightning-file-upload/documenta ...
- 【php基础】XML,DTD实例
要求一:能看懂别人写的DTD文件,自己能写更好.例如products.dtd: <!ENTITY AUTHOR "John Doe"> <!ENTITY COMP ...
- 【新特性】JDK10
一.局部变量类型推断 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言都已经支持某种形 ...
- Oracle 11G RAC11.2.0.4 + Redhat7.3安装手册
安装思路: 1.安装两台redhat7 linux系统 2.网络配置(双网卡,public,vip,private,scan) 3.存储配置(内存配置,ASM共享存储:6块5G共享盘udev,根目录留 ...
- Lotus Notes中编程发送邮件(二)
在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...
随机推荐
- Transformer【Attention is all you need】
前言 Transfomer是一种encoder-decoder模型,在机器翻译领域主要就是通过encoder-decoder即seq2seq,将源语言(x1, x2 ... xn) 通过编码,再解码的 ...
- 一、C语言调试—— gdb 的使用
1.1 gdb 调试工具常用命令 list:展开调试的源代码,缩写 l: break:设置断点,缩写为 b: info break:查看断点信息,缩写为 i b delete:删除断点 print:打 ...
- #1 macos和windows下对多Python环境配置的记录
为啥会发现环节配置的问题 因为scrapy的setting前期走弯路的时候,碰到了修改了Windows下的Python中的scrapy的默认setting,但是我电脑上还有anaconda,而且我是使 ...
- windows 下的 Rsync 同步
整理一下 windows 下的 rsync 文件同步. Rsync下载地址: 链接:https://pan.baidu.com/s/1nL0Ee_u76ytWKUFMeiKDIw 提取码:52in 一 ...
- Scanner输入数字时个位十位百位千位单独取出。
Scanner inn = new Scanner(System.in); int i = inn.nextInt(); System.out.println("个位是"+i%10 ...
- re模块 - 正则表达式 疏理(一)
在网上总是很难找到令自己比较满意的,关于正则表达式的文章.所以决定自己来总结一波,并配上相应的示例. 正则表达式:定义了规则,用来字符串处理. 用途: 1.匹配 - 符合规则的字符串,则认为匹配了. ...
- Sublime Text 3删除插件
Ctrl+Shift+P调出命令窗口,输入remove: 选择第二个Remove Package,会看到如下界面: 里面列出了你已经安装的插件,之后选择你想要卸载的就好了.
- MySQL2.字符集乱码
MySQL2.字符集 此节记录下MySQL出现乱码的原因.还是参考小册子~ 字符集简介 计算机中只能存储二进制数据,建立字符与二进制数据的映射关系来存储字符. 从两方面考虑: 1.界定清楚字符范围,即 ...
- golang interface类型转string等其他类型
inter 是interface类型,转化为string类型是: str := inter .(string) 转为其他类型也类似
- Qt for Android开发总结
近段时间,本人使用Qt5.3.0开发了Android应用,由于官方资料较少,在此记录开发过程遇到的问题及解决方法 1.Android平台的视频播放,只能使用qml的MediaPlayer 2.qml中 ...