![机器学习入门:Python语言实现](https://wfqqreader-1252317822.image.myqcloud.com/cover/84/41787084/b_41787084.jpg)
2.4 Python中的用户自定义函数
Python除了提供内置函数之外,也允许用户自定义函数。你可以通过自定义函数来实现所需的功能。下面是Python中定义函数的简单规则:
- 函数代码块以关键字
def
开头,后面跟随函数名和括号。 - 任何输入参数都应放到括号内。
- 函数体的第一行语句是可选的语句——函数的文档字符串,或者称为docstring。
- 每个函数的代码块都以冒号(:)开头,并且缩进。
- 语句
return [expression]
退出一个函数,并可选地返回一个表达式给调用者。不带参数的return
语句等同于返回None
。 - 如果一个函数没有指定返回语句,那么这个函数自动返回
None
,这是Python中的一种特殊类型的值。
这里有一个非常简单的自定义Python函数:
![050-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/050-02.jpg?sign=1739580151-hpEdkfra6kA8LsEsSUJxzVCQyz2PXzxQ-0-90375cd082e24d6faa8483d0447caf9a)
上述示例虽然简单,但说明了Python中自定义函数的语法。下面的示例更实用一些:
![050-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/050-03.jpg?sign=1739580151-FWHz24AIlL3IXpDRIBDKXuv7sLJ7ltgj-0-8cea61b6a2c952b9262755b35924b0ab)
2.4.1 在函数中设定默认值
清单2.13的DefaultValues.py
说明了如何在函数中设定默认值。
清单2.13 DefaultValues.py
![051-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-01.jpg?sign=1739580151-KY4EpfvkFCN39hJoiiFDTOQlLuvWz9WR-0-3486e23ae8d7dbce6be426503fd9fed9)
清单2.13定义了三个函数并对每个函数进行调用。函数numberFunc()
和stringFunc()
打印它们的两个形参值,函数collectionFunc()
在第二个形参为None
的时候输出一段信息。清单2.13的输出如下所示:
![051-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-02.jpg?sign=1739580151-ebjpvL45dJ4GJtnxvxJrfalXblCXwLwu-0-d4a0eaaee2c5fe6d5d317d6e3a4a53e6)
清单2.14的MultipleValues.py
说明了如何在函数中返回多个值。
清单2.14 MultipleValues.py
![051-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-03.jpg?sign=1739580151-Ussn4MHc6hN4AdxPjI0GevqPx51GFT6S-0-a355a8cd6dd5d2a41ca9db4479f70b29)
清单2.14的输出如下所示:
![051-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-04.jpg?sign=1739580151-f2YOrIFCKg2YNHkB7SIMVVFeVTU52zng-0-8e244b16aa514f5dc39d321681058a89)
2.4.2 具有可变参数的函数
Python允许你定义参数数量可变的函数。此功能在许多情形下应用,比如计算一组数的和、平均值、乘积。例如,下面的代码块计算两个数的和:
![052-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-01.jpg?sign=1739580151-FwezFimuKKbXYNARnCWliltzuCqN8wUR-0-026d0ac34d292be4902edeeefa416a5a)
上述代码的输出如下所示:
![052-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-02.jpg?sign=1739580151-I8PQwx3lbFJqommh53CSZUliBawp79Eg-0-c2568a99bda86082fd6d3a531f66b71c)
然而,上述求和代码块只能计算两个数的和。
清单2.15的VariableSum1.py
说明了如何对一组可变数量的数字求和。
清单2.15 VariableSum1.py
![052-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-03.jpg?sign=1739580151-XRyvt4sVoqAS3COB33wheXPgbDMGA8Uf-0-f81c7f84c1903acb8c518b2c9535e16d)
清单2.15定义的sum
函数的形参值可以是任意数字列表。函数的下一部分初始化sum
为0
,然后通过一个for
循环遍历values
中的值并累加到变量sum
中。sum()
函数的最后一行代码返回变量sum
的值。清单2.15的输出如下所示:
![052-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-04.jpg?sign=1739580151-dzKIWTOuGS090atXth0Ft6LNP4Ux6Juj-0-3f31dedd841dbeeb0877666c723c54e9)
2.4.3 lambda表达式
清单2.16的Lambda1.py
说明了在Python中如何创建lambda函数。
清单2.16 Lambda1.py
![052-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-05.jpg?sign=1739580151-d90OzcUfXOEuPHCY9auhntK6p4IXaUbU-0-51c4a14f0f56fe37cb9f17de5d309fce)
清单2.16定义了一个lambda表达式add
,它接受两个形参并返回它们的和(对数字来说)或者它们的连接(对字符串来说)。
清单2.16的输出如下所示:
![053-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/053-01.jpg?sign=1739580151-B5C5mlkxrARQYDEHk4Bwda1ZsrwL2yN9-0-4adf23c1da1164517b6f0d85cd2658fd)