![机器学习入门: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=1739910206-6a9xDtM3E0oAu6pjZRkKkDlCvy6Gm82M-0-845581e04aede05d84f27e67c0212a09)
上述示例虽然简单,但说明了Python中自定义函数的语法。下面的示例更实用一些:
![050-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/050-03.jpg?sign=1739910206-AO2xKzIyetuobKae7KFHA9uSSG8TtHJH-0-b368a929e11693b3fdfbb05616dba147)
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=1739910206-ahHLibhtYyyV10NOy1rK23rqzsqZxHNF-0-a33449cdee8d307d757386c5798b3fde)
清单2.13定义了三个函数并对每个函数进行调用。函数numberFunc()
和stringFunc()
打印它们的两个形参值,函数collectionFunc()
在第二个形参为None
的时候输出一段信息。清单2.13的输出如下所示:
![051-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-02.jpg?sign=1739910206-6LsVcn1ABC4f1zyD2mn6rr1x80x8AVLm-0-ffcc535e1f3dd58816e5182ee06621c8)
清单2.14的MultipleValues.py
说明了如何在函数中返回多个值。
清单2.14 MultipleValues.py
![051-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-03.jpg?sign=1739910206-BHvELAad8nBkGdY0lvx7dNOWVEM9Ks49-0-48f95997d19c40447f32f8f55693b7f5)
清单2.14的输出如下所示:
![051-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/051-04.jpg?sign=1739910206-n1qIqwmZyt1Omsd2lwVk5b0LxQnlk2cN-0-122e8506d55f93a076a95854620a5977)
2.4.2 具有可变参数的函数
Python允许你定义参数数量可变的函数。此功能在许多情形下应用,比如计算一组数的和、平均值、乘积。例如,下面的代码块计算两个数的和:
![052-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-01.jpg?sign=1739910206-nXfEM1RHzDDVHoKKSfsQX5aK55AIJHxT-0-ce2ad2db8aa021c6a34828ccdfc2027b)
上述代码的输出如下所示:
![052-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-02.jpg?sign=1739910206-1DkKFYnonEyeqDckWrrgF2LWI1OI1WMk-0-22271a4a08f55838c6e1f00c05c8edf6)
然而,上述求和代码块只能计算两个数的和。
清单2.15的VariableSum1.py
说明了如何对一组可变数量的数字求和。
清单2.15 VariableSum1.py
![052-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/052-03.jpg?sign=1739910206-4xGkRXlBmMHwv8GXOHfejvc8G0Hcbd4C-0-4fb98aa8b55a2dca3de0e8bfad787000)
清单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=1739910206-YQPxIf450yjHSZhZJyUaRKjrJGhG2Eol-0-effac2360ee8a81bd8207e87335433a6)
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=1739910206-wW28GPS4O1v8T37aYAfVLP1a9KWnN3T2-0-431fbd715401279c24b8933d3ad0df74)
清单2.16定义了一个lambda表达式add
,它接受两个形参并返回它们的和(对数字来说)或者它们的连接(对字符串来说)。
清单2.16的输出如下所示:
![053-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/053-01.jpg?sign=1739910206-65ovAjNZOYkggvXa8ZDQwwmpqFuUlPGM-0-3f090b1905ff7e558023ef32d2a10035)