函数的基本使用

什么是函数

# 函数在编程语言中相当于一个工具箱。这个工具箱可以包含很多细枝末节的零部件,通过函数这个工具箱把所有的零件打包起来。
# 这样做以后移动起来方便,在需要使用的工具的地方提着这个箱子就好,不需要带着一大堆的零部件。
# 代码中,函数就是一些有特定功能的代码块,通过这些代码快实现某个具体的功能。

为什么使用函数

# 我们知道函数是由一堆代码块构成,用来实现一个特定的功能。
# 程序中,这样的特定的功能很多时候不止使用一次,如果多次使用就需要手动编写多次。
# 这样就带来的两个不优美的问题,也是之所以使用函数的原因:
# 第一, 需要手动多次修改代码,这样很容易出问题并且还费事费力
# 第二, 程序整体上不简洁,导致代码臃肿。

函数的定义

我们需要在程序中使用函数,使用函数要先定义后调用,就和变量的先定义后使用一个道理。

函数定义的语法:

def func_name(paramter1, ...):
    """函数描述信息"""
    # 函数体代码快
    return 返回值

#1 def 是函数定义使用的关键字;
#2 func_name 是函数名,普通函数的函数名可参考变量名的命名规范。函数名指向函数内存地址,是对函数体代码的引用。函	数的命名应该反映出函数的功能;
#3 ()括号内存放函数需要的输入参数,即使函数不需要输入参数,也不能省略()
#4 parameter1等是函数的参数,确切说应该是形参,即形式参数。如果函数不需要参数可以不传参
#5 :括号后要加冒号,然后在下一行开始缩进编写函数体的代码;
#6 """函数描述信息"""这部分是函数的注释部分,描述函数的功能和参数的意义
#7 函数体代码快:函数体代码快完成函数功能部分
#8 return后跟函数的返回值。可以没有返回值(没有返回值默认返回None)

定义函数的三种形式:

# 有参|无参|空函数

定义函数发生的事情

# 1、申请内存空间保存函数体代码
# 2、将上述内存地址绑定函数名
# 3、定义函数不会执行函数体代码,但是会检测函数体语法

定义一个函数:计算两个数字的和并返回计算结果

def get_sum(num1, num2):
    """
    两个数求和并返回结果
    :param num1: 加数1
    :param num2: 加数2
    :return: res 两个数的和
    """
    res = num1 + num2
    return res

在函数编写初期,没有实现函数体代码块时,可以使用pass替代具体的函数体代码块。这样主要是为了提高开发效率

def func1():
    pass

函数的定义是在内存中开辟一块内存地址,这块内存地址上存放函数体的代码;并将函数名绑定到这快内存地址上。需要调用函数的时,直接调用函数名即可使用这块代码。就相当于通过变量名访问变量值。


函数的调用

函数定义只是将代码存放在内存的某个位置。代码是死的,只有代码被执行才有实际意义,定义时只检查语法不执行代码。

函数只有在被调用时才会被执行,才会具有实际功能。

# 调用上面定义的函数:get_sum()

result = get_sum(3, 4)
print(result)	# output: 7

按照在程序出现的形式和位置,可将函数的调用形式分为三种:

#1、语句形式:
res = get_sum(3, 4)

#2、表达式形式:
m=get_sum(1,2) # 将调用函数的返回值赋值给m
n=10*my_min(1,2) # 将调用函数的返回值乘以10的结果赋值给n

#3、函数调用作为参数的形式:
# get_sum(2, 3)作为函数get_sum的第二个参数,实现了取1,2,3加和结果赋值给m
m=get_sum(1,get_sum(2, 3))

调用函数发生的事情

# 1、通过函数名找到函数的内存地址
# 2、然后加括号就是在触发函数体代码的执行

函数的返回值

如果函数需要将计算得到的数据返回给它的调用者。那么需要在函数体内使用return语句,return语句后接返回值。

函数体中可以有多个return,但是函数内代码执行过程中一旦遇到return就会立刻停止后续代码块执行,将return后的返回值返回给调用者并退出函数。
return 是函数结束的标志

#1 返回None, 没有return 或者return 后没有返回值;
#2 返回一个值
#3 返回多个值, 逗号隔开,返回的是一个元组
posted @ 2020-03-08 21:48  the3times  阅读(301)  评论(0编辑  收藏  举报