函数

阅读: 2012


什么是函数?函数(function)是用于完成特定任务的程序代码的自包含单元。在面向对象编程的类中,函数通常被称作方法。不同的函数在程序中扮演着不同的角色,起着不同的作用,执行不同的动作。比如print()函数可以将对象打印到屏幕上;还有一些函数能够返回一个值以供程序使用,比如len()将可计算长度的对象的元素个数返回给程序。

那么,为什么要使用函数呢?

第一、函数的使用可以重用代码,省去重复性代码的编写,提高代码的重复利用率。如果程序中需要多次使用某种特定的功能,那么只需要编写一个合适的函数就可以了。程序可以在任何需要的地方调用该函数,并且同一个函数可以在不同的程序中调用,就像我们经常使用的print()和input()函数一样。

第二、函数能封装内部实现,保护内部数据,实现对用户的透明。很多时候,我们把函数看做“黑盒子”,即对应一定的输入会产生特定的结果或返回某个对象。往往函数的使用者并不是函数的编写者,函数的使用者对黑盒子的内部行为并不需要考虑,可以把精力投入到自身业务逻辑的设计而不是函数的实现细节。只有函数的设计者或者说编写者,才需要考虑函数内部实现的细节,如何暴露对外的接口,返回什么样的数据,也就是API的设计。

第三、即使某种功能在程序中只使用一次,将其以函数的形式实现也是有必要的,因为函数使得程序模块化,从“一团散沙”变成“整齐方队”,从而有利于程序的阅读、调用、修改和完善。例如,假设你正在编写一个实现下面功能的程序:

  • 读入一行数字
  • 对数字进行排序
  • 找到它们的平均值
  • 打印出一个柱状图

可以编写如下程序:

#!/usr/bin/env python
# -*- coding:utf-8 -*-


def read_numbers():
    """
    读入一行数字
    :return:
    """
    pass


def sort_numbers(lis):
    """
    对数字进行排序
    :return:
    """
    pass


def avg_numbers(lis):
    """
    求数字们的平均值
    :return:
    """
    pass


def show_number(lis):
    """
    打印柱状图
    :return:
    """
    pass


if __name__ == '__main__':
    number_list = read_numbers()
    sort_numbers(number_list)
    avg_numbers(number_list)
    show_number(number_list)

当然,其中的4个函数read_numbers()、sort_numbers()、avg_numbers()和show_numbers()的实现细节需要你自己编写。描述性的函数名可以清楚地表明函数的功能和组织结构,然后可以对每个函数进行独立设计直至完成需要的功能。如果这些函数足够通用化,那么还可以在其他程序中调用它们。



评论总数: 0