- 帖子
- 169
- 精华
- 1
- 积分
- 654
- 阅读权限
- 100
- 注册时间
- 2017-11-30
- 最后登录
- 2019-10-28
|
应该是全局变量,和局部变量的原因,相关链接https://www.cnblogs.com/Archmage/p/7569817.html
首先你用main()时,定义的三个函数内,各自的变量都是函数内的局部变量,也就是说print_grades(names)函数中的grades[name]是没法直接使用其他函数中的结果、是没有预先定义的,再运行main()时,grades,names = dict()是在def main()中运行得到的,也就是说,grades是main()中的局部变量,那么print_grades函数并不能够把它当作全局变量来直接调用,导致报错原因就是 global name 'grades'没有定义;
而不用main时,第一句grades,names = dict()其实是在全局中定义了grades,也就是全局变量了,之后调用不会报错了。
修改方法的话,可以在def print_grades(names):中加一句,global grades,将其中的grades标明为全局变量,然后再执行for循环
|
|