函数
函数和方法之间的区别
函数:描述一个传统的、无状态的函数,该函数被调用而不需要了解特定类的内容和该类的实例, 例如 sorted(data)
方法:描述一个成员函数, 在调用特定对象时使用面向对象的消息传递语法。 如 data.sort()。
本文中,我们只考虑纯函数。
例子:
在任何形式的可迭代的数据集中,下面的函数计算给特定目标值出现的次数。
def count(data,target):
n = 0
for item in data:
if item ==target:
n += 1
return n
函数头
以关键字def 开始的第一行作为函数的标志。 这个标志建立了一个新的标识符作为函数的名称(在这个示例中是count),并且设立了期望的参数个数 和参数名称。
与Java 和C++ 不同,Python是一种动态类型语言,因此Python不指定这些参数的类型。 也不指定返回值的类型。 对于函数的错误使用只有在运行的时候才被检测到。
函数体
除了函数头, 函数的其他部分称为 函数体。 函数体通常以缩进的代码块形式表示。 每次调用函数时,Python 会创建一个专用的活动记录来存储与当前调用相关的信息。 这个活动记录包括的命名空间。 命名空间用以管理当前调用中局部作用域内所有标识符。 命名空间包含该函数的参数以及在函数体内定义的其他本地标识符。
return 语句
return 语句一般用在函数体内,用来表示该函数应立即停止执行, 并将所得的值返回给调用者。
如果 return语句在执行之后没有明确的返回值,则会自动返回None 值给调用者。
同样,如果控制流在没有执行 return 语句的情况下到达函数体的末端,那么None 值会被返回。
通常,return 语句会是函数体的最后一条命令。
以下是一个较深入的例子: 测试序列中是否有这样一个值。
def contains(data, target):
for item in data:
if item == target:
return True
return False
如果满足循环体内的条件, 那么return True 语句就会执行,然后函数就会立即结束。 True 表示目标值已经被找到。
相反, 如果 for 循环到达结尾仍然没有找到匹配值,那么最后的 return False 语句将被执行。
以上为 《数据结构与算法 Python实现》的读书笔记。