![Python大数据与机器学习实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/134/30638134/b_30638134.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
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=1739251237-gcN4j7aSS2dJBpfVpDjUFHvHBxqOjQ4k-0-a8f0efe5812a4c8b9f12990a2b971d39)
使用*arg方式可支持不定长参数,用**kwargs方式支持字典类型参数。
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_2.jpg?sign=1739251237-CS8GB7I6StWMg3KjOePKrjmsjF3Km8Yd-0-b3ce8ff5a14513ae427c92298bd2328c)
相对的,当调用函数时,如果想将一个数组或字典作为函数参数,就可以使用*实现。
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_3.jpg?sign=1739251237-3sR7ipnrdT6dDg4l7f8eIFLyypYp900C-0-f70e1330ce07bab86ec10d1a37a4b848)
1.5.2 lambda匿名函数
匿名函数是不需要使用def显示定义的函数,通常用于函数功能比较简单,且在一行之内即可实现的功能,一般只使用一次。lambda定义函数的表达式看起来比def定义函数的更简洁。
举例如下:
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_44_4.jpg?sign=1739251237-ZTIf9QDT3u7xYq4QiwW0jxlG3ziIKj6w-0-3878ef309b01b9a9d3bd1adbb7eca0dd)
其中,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=1739251237-dqkYcbmrKBh2AzoOzYb3dTVlgbPVyLJA-0-f77d11610d106f158bdea5ae1306da2e)
下面是类继承的实例:
![](https://epubservercos.yuewen.com/57F11A/16699150105739906/epubprivate/OEBPS/Images/38425_45_2.jpg?sign=1739251237-19Z3wBazuLxjX40NTgqkF5PvCT73stQC-0-f057f12bfd7ad014cee69fbf0089c84b)
可以看到,它使用了其父类的构造函数,而子类中重写了show方法,实现了类的多态性。