嵌套调用及执行流程
==目标:==了解函数的嵌套调用。
函数的嵌套调用指的是:在一个函数中,调用了另一个函数。
嵌套调用语法:
def 函数1():
代码
...
def 函数2():
代码
# 调用函数1
函数1()
...
说明:
在函数2中,调用了函数1。
例如,一起来完成:
(1)先定义一个test()函数和func()函数;
(2)接着,在函数test()中,嵌套调用func()函数,并在外部调用test()函数;
(3)执行程序,观察效果;
(4)思考:嵌套调用的执行流程是怎样的呢?
# 1.定义func()
def func():
print("==========AA===============")
print("==========Nfunc()============")
print("==========BB===============")
# 2.定义test()、调用func()
def test():
print("*************11****************")
func()
print("**********M调用了test方法**************")
print("*************22****************")
# 3.调用test()
test() # 1ANBM2
# 说明流程
==总结:==
(1)嵌套调用指的是:一个函数中,调用了另一个函数;
(2)注意:函数的嵌套调用执行流程较为复杂,需要多观察执行结果。
嵌套调用的应用
==目标:==了解函数嵌套调用的应用。
使用函数的嵌套调用,我们可以把复杂问题分解成:多个简单问题,这样便于解决问题。
比如,要求多个数的平均值。此时,我们就可以拆分为两个函数:
(a)函数A:用于求解多个数之和;
(b)函数B:调用函数A,获取多个数之和,接着,再使用和除以总个数,就能求解出平均值。
例如,一起来完成:
(1)要完成一个输出任意条横线的需求;
(2)定义函数1:用于输出一条横线;
(3)定义函数2:先循环N次,再调用函数1,可输出N条横线;
(4)执行程序,观察效果。
# 1.定义一条横线的函数
def print_one_line():
print("-"*40)
# 2.N条横线
def print_lines(num):
i = 0
while i < num:
# 嵌套调用
print_one_line()
i += 1
print_lines(10)
==总结:==
(1)采用函数的嵌套调用,可以让复杂问题简单化。
变量的作用域
局部变量
==目标:==掌握局部变量的使用。
先来了解一下作用域的概念!
作用域指的是:内容生效的具体范围。
接着,当根据作用域的不同,可以给变量分为两类:
(1)局部变量
(2)全局变量 [稍后讲解]
局部变量指的是:定义在函数内部的变量或参数,且只在函数中生效。
局部变量语法:
def 函数名(参数1,参数2,...):
代码
变量名 = 值
...
说明:局部变量只作用在函数中。

例如,一起来完成:
(1)定义一个函数1,有局部变量:参数;
(2)定义一个函数2,有局部变量:变量;
(3)调用函数,观察程序执行效果。
# 1.参数
def func1(a): # 局部变量
print(f"a值为:{a}")
# func1(19)
# 2.变量
def func2():
b = 100 # 局部变量
print(f"==========b值={b}")
# func2()
# print(b)
# 局部变量只作用于当前所在函数内, 局部变量不能作用在该函数之外的区域。
# 升级: 局部变量就是定义在局部作用范围内的变量
# for temp in "hello":
# print(temp)
# print(temp) # 关注业务逻辑
==总结:==
(1)请问:局部变量只作用于局部作用域内,这句话正确吗?==A、正确==;B、错误;
(2)通常地,根据变量作用域的不同,可以把变量分为:局部变量、全局变量。
全局变量
==目标:==掌握全局变量的使用。
全局变量指的是:在函数体内、外都能生效的变量。
通俗地说,与模块中定义的函数,处于同一级别的变量,就是全局变量。
全局变量语法:
变量名 = 值
def 函数名():
代码
...
# 变量名 = 值
说明:
(1)全局变量是指与函数处于同一级别的变量;
(2)注意:当函数中的局部变量与全局变量同名时,在函数中使用的是局部变量的值。
需要注意的是,当要修改全局变量的值时,记得提前使用global进行声明。
global关键字语法:
# 声明 global 变量名 # 修改值 变量名 = 修改后的值
例如,一起来完成:
(1)定义一个全局变量1,并在函数内外都使用;
(2)定义一个同名的全局变量2和局部变量,并在函数内使用该同名变量;
(3)执行程序,观察效果。
# 1.定义全局变量
# a = 100
# print(a)
#
# def func():
# print(f"输出变量值:{a}")
#
# func() # 问题: 程序不好阅读?? -->该如何处理?
# 2.修改全局变量值
# number = 140
#
# def test():
# # 对齐: 程序报错了,才需要改错.
# global number
# number += 2
# print(f"修改后的number值为:{number}")
#
# test()
# 3.定义同名变量
age = 18
def show():
age = 34
print(f"输出age的值为:{age}")
# show()
print(f"age = {age}")
# 升级: 实际上,对于不可变类型的全局变量要修改值, 需要使用global声明;
# 但是对于可变类型的数据内容-全局变量, 可以不需要声明.
==总结:==
(1)当要定义一个作用在整个模块的变量时,就可以使用全局变量;
(2)注意:当要给全局变量修改值时,需要先使用()关键字来声明。==A、global==;B、nonlocal;



















