函数(function)是程序非常重要的组成部分,是计算机执行命令的单元;
所谓函数,就是把 具有独立功能的代码块 组织为一个整体,在需要的时候 调用;
使用函数可以提高编写的效率以及代码的重用
函数的定义和调用
函数的使用包含两个步骤:
- 定义函数 —— 在函数中编写代码,实现功能
- 调用函数 —— 执行编写的代码
函数的定义格式
def 函数名():
函数封装的代码
def
是英文define
的缩写;
函数名的命名规则和变量的命名规则要保持一致
函数的调用格式
函数名()
第一个函数
需求 :::info
- 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
- 在函数下方调用打招呼的代码
:::
实现
```python
定义函数
def say_hello(): print(‘hello world’) print(‘hello world’) print(‘hello world’)
调用函数
say_hello()
<a name="CjqMy"></a>
## 函数的文档注释
函数名并不能完全表示出函数的含义,定义函数的时候就需要给函数加上注释。<br />函数的注释就是文档注释,以后可以根据此内容查看函数使用说明,或用于生成API文档。
注释的规则和格式如下:
- 注释应该定义在**函数的下方**
- 使用三对引号注释
- 调用函数时, 鼠标悬浮在函数名上可以查看函数的说明信息
```python
def say_hello2():
"""
这是给林青霞打招呼的方法
:return:
"""
print('hello 林青霞')
函数的参数
函数的参数,可以传递数据给函数内部
参数的作用是增加函数的 通用性
参数的定义和调用
# 定义函数
def 函数名(参数1, 参数2):
函数代码
# 调用函数
函数名(参数1, 参数2)
参数的使用
需求 :::info 定义函数,传递a和b,求a和b的和 ::: 实现
def sum(a,b):
"""
这个函数是求两个数据的和
:param a: 第一个数据
:param b: 第二个数据
:return: a和b的和
"""
result = a + b
print(result)
# 调用
sum(10,20)
函数的返回值
- 开发中,有时会希望一个函数执行结束后,告诉调用者一个结果,以便调用者对结果做后续处理
- 返回值是函数给调用方提供的结果
- 函数中使用
return
关键字返回结果 - 调用函数一方,可以通过变量来接收函数的返回结果
函数返回值
需求
:::info
定义函数返回两个数最大值
:::
实现
# 定义函数
def my_max(a,b):
if a > b:
return a
else:
return b
# 调用函数
max_value = my_max(10,20)
函数多返回值
函数可以返回多个结果
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)
函数的四种类型
无参无返回值
def say_hello():
print('hello')
无参有返回值
import random
def get_temp():
return random.randint(0,100)
有参无返回值
def say_hello(name):
print('hello %s'%name)
有参有返回值
def sum(a, b):
return a + b
函数的形参和实参
形参
全称为形式参数
。是在定义函数的时候使用的参数,用来接收调用该函数时传入的参数
def sum(a, b):
return a + b
实参
全称为实际参数
,是在调用时传递给函数的参数
sum(10, 20)
形参作用域
作用域指的是变量的可用范围
- 形参的作用域只在函数内,超出函数就不能再使用了
-
局部变量和全局变量
局部变量
局部变量,指的是在函数内部定义的变量
局部变量的目的是存储需要临时保存的数据
def func1():
# 局部变量
b = 20
print('hello%d' % b)
注意: :::warning
不同的函数,可以定义相同名字的局部变量
- 局部变量的作用域只在函数内部
:::
全局变量
全局变量是在整个py文件中声明,全局范围内都可以访问 ```python全局变量
m = 10 n = 20
def func():
# 函数内访问全局变量
print(m)
<a name="iLJzM"></a>
### 函数内修改全局变量
如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量
```python
# 定义全局变量
m = 10
def func():
# 使用global声明全局变量
global m
# 将m修改成20
m = 30
print("函数内部 m=", m)