字典
创建字典:使用大括号,用冒号分隔键和值
访问、插入、设置元素的语法与列表和元组一样
用in判断字典中是否存在某个键
用del关键字或pop方法(删除指定值或将其返回)可以删除值
keys和values方法分别用于获取键和值的列表(键和值会议相同的顺序输出)
用update方法,一个字典可以被合并到另一个字典中去
从序列类型创建字典(dict类型函数)
默认值
dict的get和pop方法可以接受一个可供返回的默认值
字典键的有效类型
字典的值可以是任何Python对象,但键必须是不可变对象,如标量类型(整数、浮点数、字符串)或元组(元组中的所有对象也必须是不可变的)
通过hash函数,可以判断某个对象是不是可哈希的(是不是可作为字典的键)
如果要把列表当做键,最简单的办法就是将其转换成元组
集合
创建方式:set函数或大括号{}抱起来的集合字面量
列表、集合以及字典的推导式(不懂)
函数
def定义,return返回,位置参数,关键字参数(用于指定默认值或可选参数)
关键字参数必须位于位置参数
命名空间、作用域、以及局部函数
返回多个值
函数亦为对象
匿名函数
用lambda关键字定义,仅由单条语句组成,语句的结果就是返回值
闭包
由其他函数动态生成并返回的函数,关键性质:被返回的函数可以访问其创建者的局部命名空间中的变量
下面这个函数可以返回一个能够记录其参数(曾经传入的一切参数)的函数
扩展调用语法和args、*kwargs
函数参数的工作方式其实很简单,当你在编写func(a,b,c,d=some,e=value)时,位置和关键字参数其实分别是被打包成元组和字典的。函数实际接收到的是一个元组args和一个字典kwargs,并在其内部完成如下转换
允许将位置参数当成关键字参数那样进行指定(即使它们在函数定义中并不是关键字参数),然后通过say_hello_then_call_f调用g
柯里化:部分参数应用
从现有函数派生出新函数,其实就是定义了一个可以调用现有函数的新函数
内置的functools模块可以用partial函数将此过程简化
pandas和时间序列数据
生成器
能以一种一致的方式对序列进行迭代(比如列表中的对象或文件中的行)
生成器表达式
是构造生成器的最简单方式,把列表推导式两端的方括号改成圆括号