本帖最后由 jackz007 于 2020-2-28 12:21 编辑
【代码1】:
- var = ' Hi ' # 定义 var 为全局变量
- def fun1():
- var = ' Baby ' # var 被赋值,意味着它是一个局部变量,就是说,与同名全局变量无关
- return fun2(var) # 返回以 var 为参数对 fun2() 的调用结果
- def fun2(var): # fun1() 中的输入参数 var 在 fun2() 中属于局部变量
- var += 'I love you' # var = var + 'I love you' = ' Baby I love you'
- fun3(var) # 以 var 为参数调用 fun3()
- return var # 把 var 作为函数值反馈给调用者
- def fun3(var): # fun2() 中的输入参数 var 在 fun3() 中属于局部变量
- var = ' 小甲鱼 ' # 修改局部变量 var,这个 var 只是输入变量的副本,所以,这个修改并不涉及 fun2() 中的 var
- print(fun1()) # 打印 fun1() 的函数值 ' Baby I love you'
复制代码
【代码2】:
- var = ' Hi ' # 定义 var 为全局变量
- def fun1():
- global var # 在本函数中,变量 var 为全局变量,意味着在本函数内,可以通过赋值改变该变量的值
- var = ' Baby ' # 改变全局变量 var 的值 var = ' Baby '
- return fun2(var) # 返回以全局变量 var 为参数,对 fun2() 的调用结果
- def fun2(var): # fun1() 中的输入参数 var 在 fun2() 中属于局部变量
- var += 'I love you' # var = var + 'I love you' = ' Baby I love you'
- fun3(var) # 以 var 为参数调用 fun3()
- return var # 把 var 作为函数值反馈给调用者
- def fun3(var): # fun2() 中的输入参数 var 在 fun3() 中属于局部变量
- var = ' 小甲鱼 ' # 修改局部变量 var,这个 var 只是输入变量的副本,所以,这个修改并不涉及 fun2() 中的 var
- print(fun1()) # 打印 fun1() 的函数值 ' Baby I love you'
复制代码
【代码1】和【代码2】的打印结果完全一样,区别在 fun1() 中的这一句
【代码1】修改的是 fun1() 的局部变量,【代码2】修改的是全局变量,这个区别可以通过最后打印全局变量 var 的内容的方法得到显现。
楼主不妨一试