在前面的几节中已经看到,可以对全局变量和局部变量使用相同的变量名。Python 会在需要时自动创建新的局部变量,或者也可以用 global
关键字阻止它创建。不过,我强烈建议你不要重复使用变量名。
你可能已经从一些例子中注意到,往往很难知道一个变量是局部的还是全局的,这让代码更加混乱,因为存在同名的不同变量。而且,只要有混乱,错误就会乘虚而入。
所以对目前的状况来说,建议你对局部变量和全局变量使用不同的名字。这样就不会有混乱,也能把错误拒之门外。
你学到了什么
在这一章,你学到了以下内容。
什么是函数。
什么是参数(argument 或 parameter)。
如何向函数传递一个参数。
如何向函数传递多个参数。
如何让函数向调用者返回一个值。
变量作用域是什么,什么是局部变量和全局变量。
如何在函数中使用全局变量。
测试题
1. 使用哪个关键字来创建函数?
2. 如何调用函数?
3. 如何向函数传递信息(参数)?
4. 函数最多可以有多少个参数?
5. 如何从函数返回信息?
6. 函数运行结束后,函数中的局部变量会发生什么?
动手试一试
1. 编写一个函数,用大写字母打印你的名字,就像这样:
CCCC A RRRRR TTTTTTT EEEEEE RRRRR C C A A R R T E R RC A A R R T EEEE R RC AAAAAAA RRRRR T E RRRRR C C A A R R T E R R CCCC A A R R T EEEEEE R R
编写一个程序多次调用这个函数。
2. 建立一个函数,可以打印全世界任何人名、地址、街道、城市、州或省、邮政编码和国家。(提示:这需要 7 个参数。可以把它们作为单独的参数传入,也可以作为一个列表。)
3. 尝试使用代码清单 13-7 的例子,不过要求 my_price
是全局变量,以便看到结果输出有什么区别。
4. 编写一个函数计算零钱的总面值,包括五分币、二分币和一分币(类似于第 5 章中最后一个“动手试一试”问题)。函数应当返回这些硬币的总面值。然后编写一个程序调用这个函数。程序运行时应当得到类似下面的输出:
quarters: 3dimes: 6nickels: 7pennies: 2total is $1.72