Python杂记
函数多参数
函数可以设置传入多个参数:
def function(*args)
def function(**kwargs)
args是函数可以传入无索引参数,kwarg是函数可以传入索引参数,即字典。
如下:
多出来的无索引参数会在函数中整合为元组放在args中,有索引的参数整合为字典存在kwargs中。
有索引和无索引的参数要分别排列,不能穿插在一起,不然出错。
多继承时的对父类的初始化
1 class jc(Car,Lunzi): 2 def __init__(self,paizi,xiaohao,year,lz,x): 3 Car.__init__(self,paizi,xiaohao,year) 4 Lunzi.__init__(self,lz) 5 self.x=x 6 a=jc('111','111',111,111,111) 7 print(a.paizi)
单继承就直接用super就行了,不过用类名也行。
类中的函数一定要添加self参数
说是为了显式地传递实例。。即使你这个函数并不用self里面的成员变量,还是要加。
set类
集合,是一种数据类型。里面的元素不会重复,放入相同的元素还是算一个元素。
array提取一部分行、列
array[[1,2,3,5]],对于如二维数组提取第1、2、3、5行,即第一维的切片。
array[:,[1,2,3,5]],是提取第二维的1、2、3、5切片。
array[:,[1,2,3,5]][[2,4]],是先提取第二维的1、2、3、5切片,然后从切片提取第一维的第2、4切片。
另外,array[i:j:k],表示从i到j,步长为k提取第一维的切片(包含i,不包含j)。
排序
a.argsort(),返回数组a排序后的索引,因此可以利用这个索引实现二维矩阵按照某列或某行排序。获取排序序列:
a[a.argsort()]
获取特定列表
如[max(seq) for seq in train_data]:获取train_data里面每个元素里面的元素的最大值,然后把这些最大值组合成列表。
装饰器
在python中一切皆为对象,装饰器实际上就是以另一种简单的写法来给函数外添加一层功能。装饰器使用方式如下:
def wrap(x): print('wrap') return x @wrap def function(): print('function') function() # 1
其中@wrap这个操作表示给 function 这个函数外面包裹一层wrap函数,而 wrap 函数必须且只能有一个参数,用来传入被包裹的函数。实际上,注释1处的结果等价于:
def wrap(x): print('wrap') return x def function(): print('function') wrap(function)() #1
看懂这个实际上就懂装饰器了。