Python函数的定义、调用以及返回值详解

函数是将执行特定任务或特定功能的一段代码整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。仅在调用时运行

函数在开发过程中,可以更高效的实现代码重用。还可以提高可维护性和可读性,便于调试。

python中有很多内置函数,可以通过 help() 来查看函数的说明文档。

例如,查看 max() 的说明文档。

help(max)   #  查看max函数的说明文档
图片[1]-Python函数的定义、调用以及返回值详解-尤尤'blog

定义函数

语法格式:

def 函数名(参数列表):
    '''函数说明文档'''
    函数封装的代码块
    [return xxx]

定义函数以 def 关键字开始。

函数名:自己定义的,符合 python 标识符命名规则(字母、数字和下划线组成;不能以数字开头;不能和关键字重名)即可,最好见名知意,也就是能表达函数封装的代码功能,这样方便后续调用。

参数列表:可以接收多个参数,参数之间用英文逗号隔开。可有可无。

函数说明文档:说明函数实现的功能,可写可不写。添加说明文档可以帮助我们快速了解函数实现的功能。

[return xxx]:返回一个值给调用方。可以有返回值也可以没有返回值,需要根据实际情况而定。return 用来结束函数。

函数必须先定义后使用。且只有在调用时才会执行。也就是说,函数定义的时候,里面的带缩进的代码并不会执行。

根据 PEP 8 ,函数的前后都应该有两行空格。

例如:

def fun_add(a,b):
    return a+b

# 如果定义一个函数还没想好代码块怎么写,可以先写上pass
def demo():
    pass

函数的说明文档

在定义函数的下方,使用连续的三对引号,在引号之间编写对函数的说明文档。

查看函数说明文档

1)使用 help() 函数

2)在函数调用处,使用快捷键 Ctrl+Q。

3)还可以光标移到函数调用处,选择 View —> Quick Documentation,也可以查看函数的说明文档。

def fun_add(a,b):
    '''
    求和函数
    :param a:
    :param b:
    :return:
    '''
    return a+b

# 可以通过help()函数查看函数的说明文档
help(fun_add)

num1 = 10
num2 = 20
result = fun_add(num1,num2)
print(result)
图片[2]-Python函数的定义、调用以及返回值详解-尤尤'blog

函数调用

函数要先定义再调用。因为在调用函数前,必须要保证 Python 已经知道函数的存在,否则控制台会提示 NameError,告诉我们这个名字没有被定义。

语法格式:函数名([实际参数])

多个实参之间使用英文逗号隔开。

# Python解释器看到def知道下方定义了一个函数(带缩进的代码),只有在程序中主动调用函数,才会执行函数
def fun_add(a,b):    # 3、跳到定义函数的地方,接收参数
    return a+b   # 4、执行函数体,并将结果返回

# 1、先给变量赋值
num1 = 10
num2 = 20

# 2、调用fun_add()函数,并将num1,num2作为参数传递进去
result = fun_add(num1,num2)    # 5、将fun_add的返回值赋给result变量

# 函数体执行完成后,回到之前的程序中,继续执行后面的代码

# 6、打印输出result
print(result)   # 30

函数的执行流程:

当调用函数时,Python 解释器会回到定义函数的地方去执行下方带缩进的代码,当这些代码执行完(如果遇到 return ,后面带缩进的代码不会再执行),再回到调用函数的地方,继续向下执行代码。

图片[3]-Python函数的定义、调用以及返回值详解-尤尤'blog

这个执行流程通过 Pycharm 中的 Debug 调试工具可以清楚的看到。

函数的返回值

在程序开发中,有的时候,想要一个函数执行完成后,告诉调用者一个结果,方便调用者的后续处理。就要使用 return 来返回这个结果。

调用者可以使用一个变量来接收函数的返回结果。

函数返回值可有可无。注意:return 后面的代码不会被执行。遇到 return 就退出当前函数。

a、函数无返回值,return 可省略。

b、只有一个返回值,直接返回原类型。

c、当函数有多个返回值时,return 后面跟多个要返回的数据,多个数据之间用英文逗号间隔(return a,b,c),结果为元组。(可以拆包,即使用多个变量去接收返回值)

return 后面可以连接列表、元组或者字典,用来返回多个值。

def fun(num):
    odd = []    # 存放奇数
    even = []   # 存放偶数
    for i in num:
        if i%2:     odd.append(i)
        else:   even.append(i)
    return odd,even

lst = [10,23,32,12,54,89,76,90]
print(fun(lst))     # ([23, 89], [10, 32, 12, 54, 76, 90])

# 拆包,使用多个变量去接收返回值
lst1,lst2 = fun(lst)
print('lst1 =',lst1,',lst2 =',lst2) # lst1 = [23, 89] ,lst2 = [10, 32, 12, 54, 76, 90]
图片[4]-Python函数的定义、调用以及返回值详解-尤尤'blog

函数的嵌套调用

一个函数的里面又调用了另外一个函数。

例如在 test() 函数中调用 demo() 函数:

当 test() 函数执行到调用 demo() 函数时,会先把 demo() 函数中的代码执行完成后,才会回到 test() 中调用 demo() 函数的位置,继续执行后续代码。

代码演示:

def demo():
    print('demo被调用')

def test():
    print('*' * 10)
    demo()
    print('test')
    print('*' * 10)

test()
图片[5]-Python函数的定义、调用以及返回值详解-尤尤'blog

例如:求三个数的平均值

def fun_sum(a,b,c):
    return a+b+c

def average(x,y,z):
    # 把接收到的参数传给另一个函数
    sum3 = fun_sum(x,y,z)     # 调用求和函数,将三个数的和赋给变量 sum3
    return sum3/3

result = average(2,5,8)
print(result)
图片[6]-Python函数的定义、调用以及返回值详解-尤尤'blog
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容