Python随笔-1
本文最后更新于:2022年5月23日 凌晨
前言
其实就是想补充下多道系统作业那篇文章里讲到的东西(指getMethod函数),补充下相关知识方便各位理解。
正文
前后双下划线方法
同时具有前后双下划线的名称在Python中有特殊用途,我们最熟悉的应该就是__init__
了,构造对象函数。当然啦,Python还是有非常多的对象属性的,如果想了解更多对象属性,可以调用dir
函数,比如:
1 |
|
在这里,我直接查看了一个内置函数max
的属性,可以看到有非常多属性,我们也不必全部知道他们都用来干嘛。
仔细看的话会发现,__lt__
也在里面,那么它到底是什么呢?其实它代表的是**比较运算符’<’**。
sort函数
先上Python官方文档点我跳转:
sort(*, key=None, reverse=False)
This method sorts the list in place, using only < comparisons between items. Exceptions are not suppressed - if any comparison operations fail, the entire sort operation will fail (and the list will likely be left in a partially modified state).
也就是说,sort
方法其实是根据 < 运算符来进行排序的,也就是升序排序,如果觉得文字难以读懂,不妨写点东西试试:
1 |
|
我们也应该记住一点,sort
的排序算法是稳定的,当两个值相等的时候,即使是排序后它们的相对位置也不会变。
扩展
从上面我们能看到
sort
还支持两个额外的参数(注意是keyword-only arguments,传入必须像这样:key=xxx, reverse=xxx
)
reverse很好理解,传入一个Boolean值(True or False),如果是True则倒序排列,默认为False。
key则用来产生排序算法所依赖的对比关键字,比如说,在对一些字符串排序时,可以用key=str.lower
来实现忽略大小写的排序,或者用key=len
来实现基于字符串长度的排序。
小结
看完上面这点,再结合函数学习笔记那里的一些知识,其实就应该能清楚知道getMethod
的机制和作用什么的了,传入一个字符串,根据字符串的不同返回不同的函数对象,用来重载JCB类的__lt__
属性(在Python中是可以重载运算符的),这样在之后,我们对含有JCB类对象的列表中调用sort
方法,就可以按照我们想要的排序方式来排序列表了。
希望本文章能够帮到您~