函数(function)是程序非常重要的组成部分,是计算机执行命令的单元;
所谓函数,就是把 具有独立功能的代码块 组织为一个整体,在需要的时候 调用;
使用函数可以提高编写的效率以及代码的重用

函数的定义和调用

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

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


函数的定义格式

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

def是英文define的缩写;
函数名的命名规则和变量的命名规则要保持一致

函数的调用格式

  1. 函数名()

第一个函数

需求 :::info

  1. 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
  2. 在函数下方调用打招呼的代码 ::: 实现 ```python

    定义函数

    def say_hello(): print(‘hello world’) print(‘hello world’) print(‘hello world’)

调用函数

say_hello()

  1. <a name="CjqMy"></a>
  2. ## 函数的文档注释
  3. 函数名并不能完全表示出函数的含义,定义函数的时候就需要给函数加上注释。<br />函数的注释就是文档注释,以后可以根据此内容查看函数使用说明,或用于生成API文档。
  4. 注释的规则和格式如下:
  5. - 注释应该定义在**函数的下方**
  6. - 使用三对引号注释
  7. - 调用函数时, 鼠标悬浮在函数名上可以查看函数的说明信息
  8. ```python
  9. def say_hello2():
  10. """
  11. 这是给林青霞打招呼的方法
  12. :return:
  13. """
  14. print('hello 林青霞')

函数的参数

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

参数的定义和调用

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

参数的使用

需求 :::info 定义函数,传递a和b,求a和b的和 ::: 实现

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

函数的返回值

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

函数返回值
需求 :::info 定义函数返回两个数最大值 ::: 实现

  1. # 定义函数
  2. def my_max(a,b):
  3. if a > b:
  4. return a
  5. else:
  6. return b
  7. # 调用函数
  8. max_value = my_max(10,20)

函数多返回值

函数可以返回多个结果

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

上面函数同时返回了两个数的和以及两个数的差
返回的结果会自动组包成为一个元组数据,接收的时候可以分别接收sum、sub

  1. # 分别接收和以及差
  2. sum, sub = calc(10, 20)

函数的四种类型

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

无参无返回值

  1. def say_hello():
  2. print('hello')

无参有返回值

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

有参无返回值

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

有参有返回值

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

函数的形参和实参

形参

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

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

ab属于形参,形参在函数调用的时候才赋值

实参

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

  1. sum(10, 20)

调用sum函数时传入的1020即是实参

形参作用域

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

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

    局部变量和全局变量

    局部变量

  • 局部变量,指的是在函数内部定义的变量

  • 局部变量的目的是存储需要临时保存的数据

    1. def func1():
    2. # 局部变量
    3. b = 20
    4. print('hello%d' % b)

    注意: :::warning

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

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

    全局变量

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

    全局变量

    m = 10 n = 20

def func():

  1. # 函数内访问全局变量
  2. print(m)
  1. <a name="iLJzM"></a>
  2. ### 函数内修改全局变量
  3. 如果要在函数内部修改全局变量 需要首先使用global关键字将声明全局变量
  4. ```python
  5. # 定义全局变量
  6. m = 10
  7. def func():
  8. # 使用global声明全局变量
  9. global m
  10. # 将m修改成20
  11. m = 30
  12. print("函数内部 m=", m)