嵌套调用及执行流程
==目标:==了解函数的嵌套调用。
函数的嵌套调用指的是:在一个函数中,调用了另一个函数。
嵌套调用语法:
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;