Python从入门到熟练(7):函数

时间:2022-07-25
本文章向大家介绍Python从入门到熟练(7):函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

函数

本节主要讲函数。函数也可以看作是一种方法,能够去实现某种想法,比如加法等操作就是一种函数,只不过在背后被封装起来了。函数是编程中一个重要的方法,

掌握函数,就可以以编程的方式实现自己脑海中的想法。

1 函数的基本使用

  • 函数:把具有独立功能的代码块打包为一个小模块,在需要的时候调用 函数的使用包含两个步骤:
    • 定义函数——封装独立的功能
    • 调用函数——享受封装的成果
  • 作用:在开发程序时,使用函数可以提高工作效率以及代码的重用
  • Python中提供了非常多的内置函数:print()input()type()

定义函数:

定义函数:

  • def 函数名(): 函数封装的代码
  • 函数代码块以def关键字开头,后接函数名圆括号()
  • 关键字def : 是英文define的缩写,在计算机领域指预设置的命令
  • 函数名应该能够表达函数封装代码的功能,方便后续的调用
  • 函数名的命名应该符合标识符的命名规则

标识符的命名规范复习:

  • 标识符由字符(A〜Z , a〜z )、下划线数字组成
  • 不能以数字开头
  • 不能包含特殊字符
  • 不能和Python中的关键字重名

调用函数的方法

  • 调用函数的方法: 通过函数名()即可完成对函数的调用 注意: 代码中不能将函数调用放在函数定义的上方 , 在类中是可以的

2 函数的参数

  • 函数的参数
    • 将函数内需要使用到的变量,在调用函数的时候,使用参数传递到函数内部
    • 在函数内部,把参数当做变量使用
    • 函数定义时的参数称为形参调用时被传入的参数称为实参
  • 使用方式: 在函数名后面的小括号内部填写参数,多个参数之间使用,分隔
  • 必需参数:在函数调用时数量和顺序必须和声明时的一样
  • 关键字参数:
    • 函数调用时使用参数名进行对应传值,允许参数的顺序与声明时不一样
  • 默认参数:
    • 函数定义时给参数设定默认值,如果函数调用时没有传入,则使用默认值
  • 可变参数:
    • 在定义函数不确定参数的数量内容时,使用可变参数,不会进行直接命名
    • *args参数获取所有直接传参的参数元组
    • **kwargs参数所有关键字传参的参数字典

3 变量作用域

变量的作用域:也称变量的命名空间,由变量声明的位置决定了该变量的作用域

  • 局部变星:
    • 函数内声明的变量,不做特殊声明的都是局部变量,只能在函数内使用
  • 全局变量:
    • 在函数外赋值的变量就是全局变量,可以在整个程序范围内使用

多层代码块中变量作用域的使用规则:

  • 局部变量不能在外部代码中直接使用
  • 全局变量可以在函数体内进行访问
  • 函数体内对外部变量重新赋值不会改变函数体外的全局变量
  • global关键字:如果想对函数体外的变量进行修改,使用global关键字

获取函数体内的变量:

  • 如果需要获取函数执行的结果或者获取函数内的局部变量
  • 在函数中使用return关键字可以返回结果
  • 也可以一次性返回多个结果,返回的多个结果时使用,隔开
  • 当返回多个结果时,在接受的地方使用元组解包的方式获取数据 注 意 :return关键字表示返回结果,后续的代码都不会被执行

突然修改的列表

  • 往主函数内传入一个列表,并在函数内修改,这时函数外的列表也会同步改变
  • 传入一个字符串,尽管同样在函数内修改,函数外字符串不会发生改变
  • 测试结果
    • 函数传入可变数据类型时,在函数内修改,影响原数据
    • 不可变数据类型则不会
  • 拓展
    • 可变数据类型:List (列表)、Dictionary (字典)、Set (集合)
    • 不可变数据类型:Number (数字)、String (字符串)、Tuple (元组)

4递归函数

  • 递归函数: 指函数不断自己调用自己, 好处是可以循环访问数据以达成结果。
  • 使用场景:每次进入更深一层递归时,问题规模相比上次递归都应有所减少

注意:递归是一个很容易造成死循环的函数。但是,在被正确编写后,递归可能是一种非常有效且数学上优雅的编程方法。一定要设定好递归退出的条件。