Python 函数

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

一般意义上,函数是编程语言中的结构化元素,用于对语句进行分组,这样便可以在程序中多次使用。倘若没有函数,实现这一目标的唯一方法是:通过复制代码,并将其改编为不同的上下文来重用。

使用函数,有很多好处:

  • 有助于将程序分解成更小的块(模块化)
  • 提高程序的可理解性和质量
  • 避免重复并使代码可重用
  • 降低了软件开发和维护的成本

尤其是随着程序越来越大,函数的作用会更加显著,不仅让程序更有条理,而且更便于管理。

函数定义

在 Python 中,函数由 def 语句定义,一般的语法格式如下所示:

def function_name(parameters):
	"""docstring"""
	statement(s)

以上函数定义,由以下部分组成:

  • 关键字 def:标志着函数头的开始
  • 函数名(function_name):唯一标识一个函数,函数命名遵循标识符的编写规则。
  • 参数(parameters):通过它可以将值传递给函数,是可选的。
  • 冒号(:):用于标记函数头的结尾。
  • 文档字符串(docstring):用于描述函数的功能,是可选的。
  • 函数体:由一个或多个有效的 python 语句构成,语句必须具有相同的缩进级别(通常为 4 个空格)。
  • return 语句:用于从函数返回一个值,可选的。

例如,定义一个函数,用于计算数字的平方:

>>> def square(x):
...     return x**2
... 
>>> 

函数调用

一旦函数被定义,便可以从另一个程序、函数、甚至是 Python shell 中调用它。

要调用函数,只需键入函数名称,以及适当的参数。

>>> square(3)
9
>>> 
>>> square(6)
36

docstring

函数头后的第一个字符串称为 docstring(文档字符串 - documentation string 的缩写),用于简单地解释函数的功能,可以使用 function_name.__doc__ 来访问。

>>> def square(x):
...     """return square of given number"""
...     return x**2
... 
>>> 
>>> print(square.__doc__)
return square of given number

PS: docstring 是接口设计的重要部分,虽然是可选的,但应尽量养成使用它的习惯。

return 语句

return 语句用于退出函数,并将结果(即:return 关键字之后的表达式的值)返回给调用者。

如果函数中没有 return 语句,则当控制流到达函数体的末尾时,函数结束。

语法格式:

return [expression_list]

返回一个值

在上述示例中,函数 square() 使用了一个 return 语句。调用该函数,return 之后的表达式的值将被返回。

>>> val = square(3)
>>> val
9

返回 None

但是,如果没有明确地给出 return 语句,那么将返回什么?让我们来看看:

>>> def square(x):
...     y = x**2
... 
>>> 
>>> val = square(3)
>>> print(val)
None

调用函数,将打印 None,即无 return 语句的函数返回特殊值 None。

如果函数只有一个 return,而没有表达式,那么也将返回 None:

>>> def square(x):
...     y = x**2
...     return
... 
>>> val = square(3)
>>> print(val)
None

返回多个值

一个函数只能返回一个值,或者更应该说是一个对象。对象可以是一个数值(整数或浮点数),也可以是列表或字典。所以,如果要返回 2 个整数值,可以返回一个列表或一个包含这 2 个整数值的元组。这意味着,可以间接返回多个值。

例如,计算一个序列的最大值和最小值:

>>> def max_min(seq):
...     max_val = max(seq)
...     min_val = min(seq)
...     return max_val, min_val
... 
>>>

返回值通过拆包立即存储到变量 max_val 和 min_val 中:

>>> l = [1, 3, 5, 7, 9]
>>> max_val, min_val = max_min(l)
>>> max_val
9
>>> 
>>> min_val
1

返回多个值只不过是一种假象,函数返回的仍然是单一值:

>>> val = max_min(l)
>>> val
(9, 1)

没错,就是 tuple!在语法上,返回一个 tuple 可以省略括号,并可以同时由多个变量接收,按位置赋予相应的值。

所以,Python 的函数返回多个值其实就是返回一个 tuple,只不过写起来更方便而已。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值