函数使用(二)

函数回顾

  • 函数的定义位置是随意的吗?
    • 不是,一定是先定义,后调用,函数的调用一定要放在定义之后。
  • 函数的名字可以相同吗?
    • 不可以,其他语言中有的可以重载。python中后面的会覆盖前面的。
  • 函数中能否再定义函数?
    • 能,函数内部定义的函数称为内部函数。它是很多高级功能的基础。

变量作用域

  • 块级作用域

    • python中没有块级作用域,下面代码能够正常运行

      1
      2
      3
      4
      5
      if True:
      name = 'xiaoming'


      print(name)
  • 局部作用域

    • 局部作用域:定义函数内部的变量叫局部变量,只能在函数内部使用

      1
      2
      3
      4
      5
      6
      7
      def test():
      a = 10


      test()
      # 此处会报错
      # print(a)
  • 全局作用域

    • 全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用(但是不能改)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      num = 20


      def show():
      # 加上这句代码,就可以在函数内部修改全局变量
      global num
      num = 30
      print(num)


      show()
      print(num)

      当函数内部与外部用同名变量时,优先使用内部的

      说明:

      1. 全局变量在函数内部只能使用不能修改
      2. 若要在函数内部修改全局变量,通过global关键字声明
  • nonlocal

    • 内部函数使用外部函数的局部变量时使用

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      def wai():
      age = 20

      def nei():
      # 使用外层函数的局部变量
      nonlocal age
      age = 30
      print(age)

      nei()
      print(age)


      wai()

递归函数

  • 定义:函数内部调用函数本身的函数叫递归函数
  • 组成
    • 函数内部调用自己
    • 终止条件
    • 核心算法
  • 特点
    • 代码简洁
    • 可读性差(不易理解)
    • 瞬间占用内存较大,没有终止条件会立即崩溃
    • 有些领域禁止使用(安全领域:汽车电子)
    • 只有在不得不使用的时候再使用(目录操作)

练习:

1
2
1.求阶乘
2.斐波那契数列(1,1,2,3,5,8,13,21,34,...)
------------- 本文结束 感谢您的阅读 -------------
正在加载今日诗词....