5.1 【基础】普通函数创建与调用

函数是一种仅在调用时运行的代码块。您可以将数据(称为参数)传递到函数中,然后由函数可以把数据作为结果返回。

如果将函数比喻成蛋糕店的话,那么函数的参数就是生产蛋糕的原材料,而函数的返回值就是蛋糕成品。

1. 函数的创建

在 Python 中,使用 def 关键字定义函数

def 函数名(参数):
    # 内部代码
    return 表达式

举个例子,我这边手动实现一个计算两个数平均值的函数,这边这样子写

def get_average(a, b):
    '''
    计算平均值
    '''
    result = (a + b)/2
    return result

在定义函数的过程中,需要注意以下几点:

  • 函数代码块以def关键词开头,一个空格之后接函数标识符名称和圆括号(),再接个冒号。

  • 任何传入的参数必须放在圆括号中间。

  • 函数的第一行语句后可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • 使用return,返回值给调用者,并结束函数。return 关键并不是必须要加,可根据实际需要决定是否要写,若不写的话,默认返回None。

  • return语句依然在函数体内部,不能回退缩进。直到函数的所有代码写完,才回退缩进,表示函数体结束。

2. 函数的调用

函数编写出来就是给人调用的。要调用一个函数,必须使用函数名后跟圆括号的方式才能调用函数。

调用的同时要根据函数的定义体,提供相应个数和类型的参数,每个参数之间用逗号分隔。

def get_average(a, b):
    '''
    计算平均值
    '''
    result = (a + b)/2
    return result
average = get_average(2, 6)
print(average)  # output: 4

4. 函数的返回

函数的返回值,可以是多种多样的,非常灵活:

  • 可以是任意类型的对象,比如字符串,数值,列表,字典等等

def demo_func():
    return 10
  • 可以是一个表达式,函数会直接运行表达式,然后返回

def get_average(a, b):
    return (a + b)/2
  • 可以是函数本身,利用这点可以实现递归调用。

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
  • 另外还可以返回多个值

def demo_func():
    return 1,2.3
def decorator(func):
    def wrapper(*args, **kw):
        return func()
    return wrapper