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