机器学习入门:Python语言实现
上QQ阅读APP看书,第一时间看更新

2.4 Python中的用户自定义函数

Python除了提供内置函数之外,也允许用户自定义函数。你可以通过自定义函数来实现所需的功能。下面是Python中定义函数的简单规则:

  • 函数代码块以关键字def开头,后面跟随函数名和括号。
  • 任何输入参数都应放到括号内。
  • 函数体的第一行语句是可选的语句——函数的文档字符串,或者称为docstring。
  • 每个函数的代码块都以冒号(:)开头,并且缩进。
  • 语句return [expression]退出一个函数,并可选地返回一个表达式给调用者。不带参数的return语句等同于返回None
  • 如果一个函数没有指定返回语句,那么这个函数自动返回None,这是Python中的一种特殊类型的值。

这里有一个非常简单的自定义Python函数:

050-02

上述示例虽然简单,但说明了Python中自定义函数的语法。下面的示例更实用一些:

050-03

2.4.1 在函数中设定默认值

清单2.13的DefaultValues.py说明了如何在函数中设定默认值。

清单2.13 DefaultValues.py

051-01

清单2.13定义了三个函数并对每个函数进行调用。函数numberFunc()stringFunc()打印它们的两个形参值,函数collectionFunc()在第二个形参为None的时候输出一段信息。清单2.13的输出如下所示:

051-02

清单2.14的MultipleValues.py说明了如何在函数中返回多个值。

清单2.14 MultipleValues.py

051-03

清单2.14的输出如下所示:

051-04

2.4.2 具有可变参数的函数

Python允许你定义参数数量可变的函数。此功能在许多情形下应用,比如计算一组数的和、平均值、乘积。例如,下面的代码块计算两个数的和:

052-01

上述代码的输出如下所示:

052-02

然而,上述求和代码块只能计算两个数的和。

清单2.15的VariableSum1.py说明了如何对一组可变数量的数字求和。

清单2.15 VariableSum1.py

052-03

清单2.15定义的sum函数的形参值可以是任意数字列表。函数的下一部分初始化sum0,然后通过一个for循环遍历values中的值并累加到变量sum中。sum()函数的最后一行代码返回变量sum的值。清单2.15的输出如下所示:

052-04

2.4.3 lambda表达式

清单2.16的Lambda1.py说明了在Python中如何创建lambda函数。

清单2.16 Lambda1.py

052-05

清单2.16定义了一个lambda表达式add,它接受两个形参并返回它们的和(对数字来说)或者它们的连接(对字符串来说)。

清单2.16的输出如下所示:

053-01