函数

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(二)的更多相关文章

  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. Salesforce LWC学习(二十七) File Upload

    本篇参考: https://developer.salesforce.com/docs/component-library/bundle/lightning-file-upload/documenta ...

  6. 【php基础】XML,DTD实例

    要求一:能看懂别人写的DTD文件,自己能写更好.例如products.dtd: <!ENTITY AUTHOR "John Doe"> <!ENTITY COMP ...

  7. 【新特性】JDK10

    一.局部变量类型推断 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言都已经支持某种形 ...

  8. Oracle 11G RAC11.2.0.4 + Redhat7.3安装手册

    安装思路: 1.安装两台redhat7 linux系统 2.网络配置(双网卡,public,vip,private,scan) 3.存储配置(内存配置,ASM共享存储:6块5G共享盘udev,根目录留 ...

  9. Lotus Notes中编程发送邮件(二)

    在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...

随机推荐

  1. 基于jdk1.8的ArrayList源码分析

    前言ArrayList作为一个常用的集合类,这次我们简单的根据源码来看看AarryList是如何使用的. ArrayList拥有的成员变量 public class ArrayList<E> ...

  2. [C#] .NET4.0中使用4.5中的 async/await 功能实现异步

    在.NET Framework 4.5中添加了新的异步操作库,但是在.NET Framework 4.0中却无法使用.这时不免面临着抉择,到底是升级整个解决方案还是不使用呢? 如果你的软件还没发布出去 ...

  3. ArcGis使用字段别名Alias Name导出Excel

    在ArcMap10.3+(根据官网描述应该是,作者测试使用10.5,可行)以后的版本,可以使用ArcToolbox工具导出Excel. 工具位置ConversionTools——Excel——Tabl ...

  4. 通过Hack方式实现SDC中Stage配置联动刷新

    目录 问题描述 如何从外部获取下拉列表参数 如何实现根据下拉列表选项动态刷新 总结 问题描述 最近项目组准备开发一个IoT平台项目,需要使用到StreamSets DataCollector组件进行数 ...

  5. java基础 关于final修饰符

    final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量 ...

  6. iTOP-4412/4418/6818开发板-fastboot烧写脚本

    在 iTOP-4412,4418,6818 开发板烧写的时候,使用的是 fastboot 工具. fastboot 工具需要在 cmd.exe 中调用,每次都需要输入烧写命令,这样步骤有点多.在程序员 ...

  7. 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

    程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...

  8. pwnable.tw hacknote

    产生漏洞的原因是free后chunk未置零 unsigned int sub_80487D4() { int index; // [esp+4h] [ebp-14h] char buf; // [es ...

  9. 分布式事务2PC_PENDING异常处理

    set heading off;set feedback off;set echo off;Set lines 999;Spool rollback.sqlselect 'ROLLBACK FORCE ...

  10. form表单中button按钮返回上一页解决办法

    解决Form中button按钮不好用的问题解决办法. 方法一: 1.在Form表单标签中国增加一个属性,如下图,红框处 2.返回按钮样式 3.onclick方法需要跳转的页面,遮挡处为需要返回的页面 ...