如何理解函数类型?
在Python中,一切皆对象,函数也是对象。在理解函数类型之前,我们先看一段简单的代码实例,计算某个区间范围内的所有合数的和:
# __desc__ = 计算某区间范围内的所有合数的和
# 定义变量sum_of_numbers用来保存所有合数的和
sum_of_numbers = 0
# 合数指自然数中除了能被1和本身整除外
# 还能被其他数(0除外)整除的数
for number in range(3, 10):
# 通过for循环和range来遍历从2到number之间的所有自然数
for _ in range(2, number):
# % 是Python中的求余计算符号
if number % _ == 0:
# number能被其他数整除时,余数为0
# 如果余数为0,说明为合数
sum_of_numbers += number
break
else:
print(sum_of_numbers)
在上文的代码中,通过for循环来计算1到10之间的所有合数的和。假设我们需要在下文中计算100到1000之间的所有合数的和?那么,该如何编写这样的程序?简单的做法是再次使用for循环来编写一段逻辑相同的代码,但这样的做法会造成代码的冗余。
在计算机编程中,可以将重复性的代码块封装到一个函数中,当需要实现相同的功能时,再调用这个函数。可以将函数通俗地理解为一个从输入到输出的转换器,例如语言翻译器就是一种函数,将一种语言输出为另外一种语言。
函数的定义
在Python中使用关键字def来定义函数,关于def的定义,可以在交互模式中执行help("def")来进行查找:>>> help("def")
Function definitions
********************
A function definition defines a user-defined function object (see
section The standard type hierarchy):
......
函数定义的基本语法:
def function_name(parameter_list):
return value
function_name表示函数名,在下文中再次调用函数时,需要通过函数名来进行引用,没有函数名的函数被称为匿名函数。Python中的函数名通常为小写的英语单词或单词的组合。在为函数取名的时候,函数名应当具备较强的可读性,即通过函数名就可以知道该函数的功能。函数名可以参考变量的命名风格。
parameter_list表示参数列表,参数列表是指函数可以包含多个参数,参数以英文逗号进行分隔。所谓的参数是指函数的输入。函数通常会有一个输出,在Python中通过return语句将输出进行返回。Python解释器在解析执行当前函数时,在执行到return语句的时候,会结束函数的运行,并将值返回给调用方。当需要返回多个值时,以逗号进行分隔。同学们可以将Python简单的理解为从输入到输出的转换,通过参数列表来定义函数的输入,通过函数的返回值,来定义输出的值。函数中的return不是必须的,这意味着函数可以没有返回值。
现在我们将计算区间范围内的合数的和来通过函数进行定义,以彻底的理解函数。
代码实例:
# __desc__ = 定义函数,计算某区间范围内的所有合数的和
# 使用def来定义函数
def sum_of_composite_numbers(start, stop):
# 函数名为sum_of_composite_numbers
# 在函数的参数列表中定义了两个形参,分别是start,stop
# start表示区间的起始位置,stop表示区间的结束位置
# 定义变量sum_of_numbers用来保存所有合数的和
sum_of_numbers = 0
# 合数指大于1的自然数中除了能被1和本身整除外
# 还能被其他数(0除外)整除的数
# 如果参数start的值大于2,那么保持原始的输入,否则赋值为3
start = start if start >2 else 3
for number in range(start, stop):
# 通过for循环和range来遍历从2到number之间的所有自然数
for _ in range(2, number):
# % 是Python中的求余计算符号
if number % _ == 0:
# number能被其他数整除时,余数为0, 如果余数为0,说明为合数,执行break退出循环
sum_of_numbers += number
break
# 通过 return将合数的和进行返回
return sum_of_numbers
在博客中系统学习Python:跟薯条老师学Pythonchipscoco.comPython零基础入门指南chipscoco.com精通Python面向对象编程chipscoco.com轻松学会Django-django入门实战教程chipscoco.com