- Python大数据与机器学习实战
- 谢彦
- 536字
- 2020-08-27 18:27:22
1.5 Python函数和类
相对于C语言和Java,Python的函数和类的用法更加灵活。Python用def关键字定义函数,除函数的一般格式外,它还支持使用lambda定义匿名函数。本节将介绍Python的函数和类的基本使用方法。
1.5.1 定义和使用函数
Python函数的定义和使用方法和其他语言类似,本小节以示例的方式展示Python函数区别于其他语言的特殊用法。Python使用def定义函数,返回结果可以是各种数据类型,形如:
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_1.jpg?sign=1739076244-eIZHH4E0J74GWdDqF7cROJI7HxzHGSDk-0-2fc9130b2503ee7341adff1b2a6e5119)
使用*arg方式可支持不定长参数,用**kwargs方式支持字典类型参数。
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_2.jpg?sign=1739076244-0ErohvFcEDCEM2urgrtSxNv4WMDh1bLn-0-fc354b79df1448ac590b22ca61c3b1e6)
相对的,当调用函数时,如果想将一个数组或字典作为函数参数,就可以使用*实现。
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_3.jpg?sign=1739076244-DtGgWs2zB3yYTr9WjSR5mD8LwCsjN4eO-0-f5f722eefb52712bf11ac8620d3c9bf2)
1.5.2 lambda匿名函数
匿名函数是不需要使用def显示定义的函数,通常用于函数功能比较简单,且在一行之内即可实现的功能,一般只使用一次。lambda定义函数的表达式看起来比def定义函数的更简洁。
举例如下:
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_4.jpg?sign=1739076244-dzbd3of8gJVNpXCxgRaC6h2v51PnYbFu-0-507845b19e2829963b2927dfa4c71785)
其中,x是形参,x+1为函数返回值。在第3章Pandas部分将用lambda表达式实现表处理。
1.5.3 类和继承
类增加了代码的复用性,使代码更便于阅读。Python用class关键字定义类,如果继承自其他类,就将其父类名放在括号内,然后加入冒号和换行。下面用缩进代码作为类的实现,类的构造函数为__init__,其参数是在实例化时需要传入的参数。类中函数的第一个参数指代类的当前实例,在调用时不需要指定参数。
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_45_1.jpg?sign=1739076244-ZUpepr7xFQLip0WBoVbL6Y0rx1AkNrU8-0-63a0337088aef9f1193b447cd84e76a3)
下面是类继承的实例:
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_45_2.jpg?sign=1739076244-sLVRTxwvfGeMazvoF3e8FTOpjozlxvJZ-0-9538fa39af74307018e6b08f95aae059)
可以看到,它使用了其父类的构造函数,而子类中重写了show方法,实现了类的多态性。