三、函数#

函数是程序非常重要的组成部分,是计算机执行命令的单元

所谓函数,就是把 具有独立功能的代码块 组织为一个整体,在需要的时候 调用

使用函数可以提高编写的效率以及代码的重用

1. 函数的定义和调用#

函数的使用包含两个步骤:

1
2
1. 定义函数 —— 在函数中编写代码,实现功能
2. 调用函数 —— 执行编写的代码

函数的定义格式

1
2
def 函数名():
    函数封装的代码

def:是英文define的缩写

函数名的命名规则和变量的命名规则要保持一致

函数的调用格式

1
函数名()

第一个函数

需求:

1
2
3
需求:
1. 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
2. 在函数下方调用打招呼的代码

代码如下:

1
2
3
4
5
6
7
8
# 定义函数
def sayHello():
    print('hello world')
    print('hello world')
    print('hello world')

# 调用函数
sayHello()

2. 函数的文档注释#

函数名并不能完全的表示出函数的含义,定义函数的时候就需要给函数加上注释

函数的注释就是文档注释

注释的规则和格式如下:

  • 注释应该定义在函数的下方
  • 使用三对引号注释
  • 调用函数时,可以通过快捷键Ctrl+Q查看函数的说明信息
1
2
3
4
5
6
def sayHello2():
    '''
    这是给林青霞打招呼的方法
    :return:
    '''
    print('hello 林青霞')

3. 函数的参数#

函数的参数,可以传递数据给函数内部 参数的作用是增加函数的 通用性

参数的定义和调用格式

1
2
3
4
5
6
# 定义函数
def 函数名(参数1,参数2):
    函数代码

# 调用函数
函数名(参数1,参数2)

函数参数的使用

需求:

1
2
需求:
定义函数,传递a和b,求a+b的和

代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def sum(a,b):
    '''
    这个函数是求两个数据的和
    :param a: 第一个数据
    :param b: 第二个数据
    :return:
    '''
    result = a+b
    print(result)

# 调用
sum(10,20)

4. 函数的返回值#

1.概念

  • 开发中,有时会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理
  • 返回值是函数给调用方提供的结果
  • 函数中使用return关键字返回结果
  • 调用函数一方,可以通过变量来接收函数的返回结果

函数返回值

需求:

1
定义函数返回两个数最大值

代码如下:

1
2
3
4
5
6
7
8
9
# 定义函数
def myMax(a,b):
    if a>b:
        return a
    else:
        return b

# 调用函数
maxValue = myMax(10,20)

5. 函数多返回值#

python函数可以返回多个结果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def cacl(a, b):
    '''
    求a+b以及a-b的结果
    :param a:
    :param b:
    :return:
    '''
    sum = a + b
    result = a-b
    return sum,result

上面函数同时返回了两个数的和以及两个数的差

返回的结果会自动组包成为一个元组数据,接收的时候可以通过分别接收和以及差

1
2
# 分别接收和以及差
sum,result = cacl(10,20)

6. 函数的四种类型#

函数按照是否有参数以及返回值可以将函数分成四种类型

无参无返回值函数

1
2
def sayHello():
    print('hello')

无参有返回值函数

1
2
3
import random
def getTemp():
    return random.randint(0,100)

有参无返回值函数

1
2
def sayHello(name):
    print('hello %s'%name)

有参有返回值函数

1
2
def sum(a,b):
    return a+b

7. 函数的形参和实参#

形参

全称为"形式参数".是在定义函数的时候使用的参数,用来接收调用该函数时传入的参数

1
2
def sum(a,b):
    return a+b

a和b属于形参

形参在函数调用的时候才赋值

实参

全称为"实际参数",是在调用时传递给函数的参数

1
sum(10,20)

调用sum函数时传入的10和20即是实参

形参作用域

作用域指的是变量的可用范围

  • 形参的作用域只在函数内,超出函数就不能再使用了
  • 作用域可以减少不同函数的命名冲突

8. 局部变量和全局变量#

局部变量

  • 局部变量,指的是在函数内部定义的变量
  • 局部变量的目的是存储需要临时保存的数据
1
2
3
4
def func1():
    # 局部变量
    b = 20
    print('hello%d'%b)

注意:

不同的函数,可以定义相同名字的局部变量

局部变量的作用域只在函数内部

全局变量

全局变量是在整个py文件中声明,全局范围内都可以访问

1
2
3
4
5
6
7
# 全局变量
m = 10
n = 20

def func():
    # 函数内访问全局变量
    print(m)

函数内修改全局变量

如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量

1
2
3
4
5
6
7
8
9
# 定义全局变量
m = 10

def func():
    # 使用global声明全局变量
    global m
    # 将m修改成20
    m = 30
    print('函数内部m=%d'%m)