|
发表于 2020-3-13 00:01:53
|
显示全部楼层
如果想知道结果,自己试下就知道啦
原因如下:
首先执行print那一行语句,执行这行的时候会先调用fun1,因为在fun1中用了global 修饰 var,所以当执行完var = ' Baby '后全局变量var就指向了 ' Baby '。然后调用fun2,在fun2中var没有global修饰,所以是局部变量,当执行完var += 'I love you'后,fun2中的局部变量var指向的内容为“Baby I love you”,全局变量var指向的内容依然是' Baby '。在fun2中调用了fun3其实对结果没有一点影响,原因是fun3中被修改的var是fun3自己的局部变量,与它的上一层fun2中的var是两个东东,与它的上上层fun1或者再上层全局中的var都不是一个玩意。调用完fun3后执行返回fun2中局部变量var指向的内容“Baby I love you”,接着fun1返回fun2的返回的内容“Baby I love you”,然后print将fun1返回的内容“Baby I love you”打印出来。请注意,如果此时你打印var,var指向的内容是 ' Baby ',不信你试~ |
|