0x00:函数的基本使用

一、什么是函数

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

    • 定义函数——在函数中编写代码,实现功能
    • 调用函数——执行编写的代码
# 函数定义
def 函数名():
    函数内部代码块

二、函数的作用

  • 提高代码编写效率,增加代码复用率
  • 提高代码模块性

三、函数执行过程

函数执行流程

四、函数的文档注释

  • 在开发中,如果希望给函数添加文档注释,应该在定义函数下方,使用连续的一对三引号
  • 连续的一对三引号之间编写对函数的说明文字

    def func_cooment():
        """
        函数注释说明
        """
        print("嘿嘿嘿")

0x01:函数的参数

一、不带参数的函数

  • 不带参数函数的定义格式:

    def 函数名字():
        函数体代码块
  • 不带参数函数的调用格式

    函数名字()

二、带参数的函数

  • 函数定义时的参数叫 形参,函数调用时的参数叫 实参
  • 带参数函数的定义格式:

    def 函数名字(形参1,形参2,……):
        函数体代码块
  • 带参数函数的调用格式:

    函数名字(实参1,实参2,……)

三、形参的作用域

  • 作用域:变量起作用的范围
  • 形参的作用域:只在定义函数的代码块

0x02:函数的返回值

一、函数返回值的作用

  • 开发中,有时候希望一个函数执行结束后,告诉调用者一个执行结果,以便调用者针对具体的结果做出后续的处理
  • 返回值是函数给调用方提供的结果

二、return关键字

  • return关键字只能在函数中使用
  • 在函数中,使用return关键字,可以终止函数执行,并返回一个值

函数返回值

三、函数默认返回值

  • 函数内部没有任何return语句,默认返回None,表示没有任何返回值
  • return不设置返回值,默认也返回None

四、return中断函数

  • 函数一旦执行return,函数内return之后的代码将不会被执行

0x03:四种函数类型的分类

  • 函数根据有无参数、有无返回值,可以互相组合,一共有4种:

    • 无参数,无返回值
    • 无参数,有返回值
    • 有参数,无返回值
    • 有参数,有返回值
  • 定义函数时,是根据实际所需功能需求来设计的,所以不同开发人员编写的函数类型各不相同

一、无参数,无返回值的函数

def _hello():
    print('Hello World!')

_hello()

二、无参数,有返回值的函数

def get_pi():
    return 3.14

_pi = get_pi()
print(_pi)

三、有参数,无返回值的函数

def print_num(num):
    for i in range(0, num):
        print(i)

print_num(10)

四、有参数,有返回值的函数

def get_sum(n, m):
    return n + m

_sum = get_sum(1, 2)
print(_sum)

五、函数的嵌套调用

  • 一个函数里面又调用另一个函数,这就是函数嵌套调用
  • 如果函数func02中,调用了另外一个函数func01

    • 那么执行到调用func01函数时,会先把函数func01中的代码都执行完
    • 才会回到func02中调用函数func01的位置,继续执行后续代码

函数嵌套调用流程


0x04:局部变量和全局变量

一、局部变量

  • 局部变量:函数定义的形参,函数内部定义的变量
  • 不同的函数,可以定义相同名字的局部变量,不同函数中的局部变量互不影响
  • 局部变量的作用域只在函数内部
  • 局部变量的目的是存储需要临时保存的数据

二、全局变量

  • 全局变量

    • 在函数外部定义的变量叫做全局变量
    • 全局变量能够在所有的函数中进行访问(不修改)
    • 函数内默认不能直接修改全局变量
  • 通过global声明修改全局变量

    • 如果在函数汇总修改全局变量,那么就需要先使用global进行声明,再进行修改

三、全局变量与局部变量的区别

  • 定义方式不同

    • 局部变量是定义在函数内部的变量
    • 全局变量是定义在函数外部的变量
  • 作用域不同

    • 局部变量只在定义所在的函数内部有效
    • 全局变量在所有函数内都有效

0x05:参数详解

一、位置参数

  • 函数调用时,按形参的位置,从左到右,一一匹配传递参数
  • 位置参数必须一一对应,缺一不可

二、关键字参数

  • 函数调用时,通过形参=值的方式为函数形参传值,不用按照位置为函数形参传值,这种方式叫关键字参数
  • 注意:

    • 关键字参数必须在位置参数的右边
    • 对同一个形参不能重复传值

三、缺省参数

  • 形参设定默认值,称为缺省参数,也叫默认参数
  • 注意:

    • 调用函数时,如果没有传入默认参数对应的实参。则使用默认值
    • 默认参数必须在普通参数的后边

四、不定长参数

  • 元组型不定长参数

    • 函数可以定义不定长参数,用于接收任意数量的位置实参
    • 形参变量名前面加上一个*,这个参数则为元组型不定长参数

      • 形参变量名一般叫:args
    • 函数体使用不定长参数,直接使用变量名即可,无须 加*
    • 不定长参数的本质是将传递的参数包装成元组
  • 字典型不定长参数

    • 不定长参数还有一种形式,可以接收任意数量的关键字实参
    • 定义参数时需要在形参名前加**,则为字典型不定长参数

      • 形参变量名一般叫:kwargs
    • 函数体使用不定长参数,直接使用变量名即可,无须加**
    • 这种不定长参数会将关键字参数包装成字典
    • 注意:

      • 已经存在的形参,其对应的关键字实参不会被包装到字典中
      • 字典型可变形参必须在形参列表的最后边
Last modification:August 3rd, 2020 at 05:15 pm
给狐宝打点钱⑧