购物网站创建,wordpress主题xiu5.6,唐山网站建设那家性价比高,给我看免费观看0 前言 节选学习部分有用的内容 Fluent Python
2 序列构成的数组 Python 会忽略代码里 []、{} 和 () 中的换行#xff0c;因此如果你的代码里有多行的列表、列表推导、生成器表达式、字典这一类的#xff0c;可以省略不太好看的续行符 \。 元组其实是对数据的记录#x…0 前言 节选学习部分有用的内容 Fluent Python
2 序列构成的数组 Python 会忽略代码里 []、{} 和 () 中的换行因此如果你的代码里有多行的列表、列表推导、生成器表达式、字典这一类的可以省略不太好看的续行符 \。 元组其实是对数据的记录元组中的每个元素都存放了记录中一个字段的数据外加这个字段的位置。正是这个位置信息给数据赋予了意义。 笛卡儿积列表的长度等于输入变量的长度的乘积。 把一个可迭代对象里的元素一并赋值到由对应的变量组成的元组中。元组拆包unpacking b, a a, b # 不使用中间变量交换两个变量的值
# 还可以用 * 运算符把一个可迭代对象拆开作为函数的参数
t (20, 8)
divmod(*t)用*来处理剩下的元素平行赋值 a, *body, c, d range(5)a, body, c, d
(0, [1, 2], 3, 4)具名元组 collections.namedtuple 是一个工厂函数它可以用来构建一个带字段名的元组和一个有名字的类 from collections import namedtupleCity namedtuple(City, name country population coordinates) tokyo City(Tokyo, JP, 36.933, (35.689722, 139.691667)) tokyo
City(nameTokyo, countryJP, population36.933, coordinates(35.689722,
139.691667))多维切片和省略 二维的 numpy.ndarray 就可以用 a[i,j] 这种形式来获取抑或是用 a[m:n, k:l] 的方式来得到二维切片。 省略ellipsis的正确书写方法是三个英语句号…如果 x 是四维数组那么 x[i, …] 就是 x[i, :, :, :] 的缩写。 对序列使用和* 不修改原有的操作对象而是构建一个全新的序列。 # 一个包含 3 个列表的列表嵌套的 3 个列表各自有 3 个元素
board [[_] * 3 for i in range(3)]list.sort 方法会就地排序列表 如果一个函数或者方法对对象进行的是就地改动那它就应该返回 None好让调用者知道传入的参数发生了变动而且并未产生新的对象。 内置函数 sorted它会新建一个列表作为返回值。甚至可以操作不可变序列或生成器。 Python 的排序算法——Timsort——是稳定的意思是就算两个元素比不出大小在每次排序的结果里它们的相对位置是固定的跟在原来的列表里一样。 频繁对序列做先进先出的操作deque双端队列。
5 一等函数 在 Python 中函数是一等对象即一等函数。 在运行时创建能赋值给变量或数据结构中的元素能作为参数传给函数能作为函数的返回结果 map 函数返回一个可迭代对象里面的元素是把第一个参数 一个函数应用到第二个参数一个可迭代对象这里是 range(11)中各个元素上得到的结果。 接受函数为参数或者把函数作为结果返回的函数是高阶函数higher-order function。 内置函数 sorted 也是可选的 key 参数用于提供一个函数它会应用到各个元素上进行排序。 列表推导或生成器表达式具有 map 和 filter 两个函数的功能。 lambda 关键字在 Python 表达式内创建匿名函数。在参数列表中最适合使用匿名函数。 函数注解注解不会做任何处理。 def clip(text:str, max_len:‘int 0’80) - str: 函数声明中的各个参数可以在 : 之后增加注解表达式。如果参数有默认值注解放在参数名和 号之间。如果想注解返回值在 ) 和函数声明末尾的 : 之间添加 - 和一个表达式。那个表达式可以是任何类型。注解中最常用的类型是类如 str 或 int和字符串如 ‘int 0’。 functools.partial 这个高阶函数用于部分应用一个函数。部分应用是指基于一个函数创建一个新的可调用对象把原函数的某些参数固定。
7 函数装饰器和闭包
装饰器是可调用的对象其参数是另一个函数被装饰的函数。装饰器的一大特性是能把被装饰的函数替换成其他函数。第二个特性是装饰器在加载模块时导入时立即执行。Python 编译函数的定义体时它判断 b 是局部变量因为在 函数中给它赋值了。赋值隐式创建局部变量。闭包和自由变量如果为 nonlocal 声明的变量赋予新值闭包中保存的绑定会更 新。装饰器的典型行为把被装饰的函数替换成新函数二者接受相同的参数而且通常返回被装饰的函数本该返回的值同时还会做些额外操作。使用functools.lru_cache做备忘把 d1 和 d2 两个装饰器按顺序应用到 f 函数上作用相当于 f d1(d2(f))。 叠放装饰器装饰器工厂函数