函数使用(二)
函数回顾
- 函数的定义位置是随意的吗?
- 不是,一定是先定义,后调用,函数的调用一定要放在定义之后。
- 函数的名字可以相同吗?
- 不可以,其他语言中有的可以重载。python中后面的会覆盖前面的。
- 函数中能否再定义函数?
- 能,函数内部定义的函数称为内部函数。它是很多高级功能的基础。
变量作用域
-
块级作用域
-
python中没有块级作用域,下面代码能够正常运行
1
2
3
4
5if True:
name = 'xiaoming'
print(name)
-
-
局部作用域
-
局部作用域:定义函数内部的变量叫局部变量,只能在函数内部使用
1
2
3
4
5
6
7def test():
a = 10
test()
# 此处会报错
# print(a)
-
-
全局作用域
-
全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用(但是不能改)
1
2
3
4
5
6
7
8
9
10
11
12num = 20
def show():
# 加上这句代码,就可以在函数内部修改全局变量
global num
num = 30
print(num)
show()
print(num)当函数内部与外部用同名变量时,优先使用内部的
说明:
- 全局变量在函数内部只能使用不能修改
- 若要在函数内部修改全局变量,通过global关键字声明
-
-
nonlocal
-
内部函数使用外部函数的局部变量时使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14def wai():
age = 20
def nei():
# 使用外层函数的局部变量
nonlocal age
age = 30
print(age)
nei()
print(age)
wai()
-
递归函数
- 定义:函数内部调用函数本身的函数叫递归函数
- 组成:
- 函数内部调用自己
- 终止条件
- 核心算法
- 特点:
- 代码简洁
- 可读性差(不易理解)
- 瞬间占用内存较大,没有终止条件会立即崩溃
- 有些领域禁止使用(安全领域:汽车电子)
- 只有在不得不使用的时候再使用(目录操作)
练习:
1 | 1.求阶乘 |