1. 函数的定义和调用
函数的使用包含两个步骤:
- 定义函数 —— 在函数中编写代码,实现功能
- 调用函数 —— 执行编写的代码
1.1. 函数的定义格式
def 函数名():
函数封装的代码
def
是英文define
的缩写;
函数名的命名规则和变量的命名规则要保持一致
1.2. 函数的调用格式
函数名()
1.3. 第一个函数
需求
- 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
- 在函数下方调用打招呼的代码
# 定义函数
def say_hello():
print('hello world')
print('hello world')
print('hello world')
# 调用函数
say_hello()
2. 函数的文档注释
函数名并不能完全表示出函数的含义,定义函数的时候就需要给函数加上注释。
函数的注释就是文档注释,以后可以根据此内容查看函数使用说明,或用于生成API文档。
注释的规则和格式如下:
- 注释应该定义在函数的下方
- 使用三对引号注释
- 调用函数时, 鼠标悬浮在函数名上可以查看函数的说明信息
def say_hello2():
"""
这是给林青霞打招呼的方法
:return:
"""
print('hello 林青霞')
3. 函数的参数
函数的参数,可以传递数据给函数内部
参数的作用是增加函数的 通用性
3.1. 参数的定义和调用
def 函数名(参数1, 参数2):
函数代码
# 调用函数
函数名(参数1, 参数2)
3.2. 参数的使用
需求
定义函数,传递a和b,求a和b的和
def sum(a,b):
"""
这个函数是求两个数据的和
:param a: 第一个数据
:param b: 第二个数据
:return: a和b的和
"""
result = a + b
print(result)
# 调用
sum(10,20)
4. 函数的返回值
- 开发中,有时会希望一个函数执行结束后,告诉调用者一个结果,以便调用者对结果做后续处理
- 返回值是函数给调用方提供的结果
- 函数中使用
return
关键字返回结果- 调用函数一方,可以通过变量来接收函数的返回结果
函数返回值
需求
定义函数返回两个数最大值
# 定义函数
def my_max(a,b):
if a > b:
return a
else:
return b
# 调用函数
max_value = my_max(10,20)
5. 函数多返回值
函数可以返回多个结果
def calc(a, b):
'''
求a+b以及a-b的结果
:param a:
:param b:
:return: 结果的元组
'''
sum = a + b
sub = a-b
return sum, sub
上面函数同时返回了两个数的和以及两个数的差
返回的结果会自动组包成为一个元组数据,接收的时候可以分别接收sum、sub
# 分别接收和以及差
sum, sub = calc(10, 20)
6. 函数的四种类型
函数按照是否有参数以及返回值可以将函数分成四种类型
6.1. 无参无返回值
def say_hello():
print('hello')
6.2. 无参有返回值
import random
def get_temp():
return random.randint(0,100)
6.3. 有参无返回值
def say_hello(name):
print('hello %s'%name)
6.4. 有参有返回值
def sum(a, b):
return a + b
7. 函数的形参和实参
7.1. 形参
全称为形式参数
。是在定义函数的时候使用的参数,用来接收调用该函数时传入的参数
def sum(a, b):
return a + b
a
和b
属于形参,形参在函数调用的时候才赋值
7.2. 实参
全称为实际参数
,是在调用时传递给函数的参数
sum(10, 20)
调用sum
函数时传入的10
和20
即是实参
7.3. 形参作用域
作用域指的是变量的可用范围
- 形参的作用域只在函数内,超出函数就不能再使用了
- 作用域可以减少不同函数的命名冲突
8. 局部变量和全局变量
8.1. 局部变量
- 局部变量,指的是在函数内部定义的变量
- 局部变量的目的是存储需要临时保存的数据
def func1():
# 局部变量
b = 20
print('hello%d' % b)
- 不同的函数,可以定义相同名字的局部变量
- 局部变量的作用域只在函数内部
8.2. 全局变量
全局变量是在整个py文件中声明,全局范围内都可以访问
# 全局变量
m = 10
n = 20
def func():
# 函数内访问全局变量
print(m)
8.3. 函数内修改全局变量
如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量
# 定义全局变量
m = 10
def func():
# 使用global声明全局变量
global m
# 将m修改成20
m = 30
print("函数内部 m=", m)