
前几章我们学会了顺序、分支和循环,但还差一个关键能力:复用。比如程序里好几处都要计算两个数的和,总不能每次都把代码重写一遍吧?函数就是为“复用”而生:把一段代码封装起来、起个名字,需要时调用一次即可。今天就来学函数,以及把函数组织起来的“模块”。
01 函数:封装可复用的代码
定义函数用 def 关键字,写法是 def 函数名(参数):,后面缩进的部分是函数体。函数分两类:有返回值的(用 return 返回结果)和没有返回值的(只负责执行操作)。看几个例子:
|
python |
注意区别:没有 return 的函数,调用后得到的是 None(表示“什么都没有”);有 return 的函数,调用处就能拿到 return 出来的值。
02 默认参数:调用时可以“偷懒”
定义函数时,可以给参数设置默认值。调用时如果不传这个参数,就自动使用默认值。看几个例子:
|
python |
这个能力和 Java 的方法重载有点像,但概念不同:Java 靠定义多个同名方法(重载)来支持不同的参数组合;Python 没有重载,靠默认参数实现类似效果——参数个数固定,只是某些参数可以不传。
03 可变参数:参数个数不固定
有时函数要接收的参数个数不固定,比如求任意多个数的和。这时可以用可变参数 *args,函数内部会把它当做一个元组来遍历。看几个例子:
|
python |
调用时想传几个就传几个,它们会全部收进 numbers 这个元组里,再用循环逐个累加。
04 模块:给代码“分区”,告别命名冲突
给变量、函数起名字,总会遇到一个尴尬的问题:命名冲突。最简单的场景是同一个 .py 文件里定义了两个同名函数——Python 没有函数重载,后定义的那个会覆盖先定义的,也就是说真正生效的只有最后一个。看几个例子:
|
python |
解决办法之一,是把不同功能的函数放进不同的 .py 文件——这样的文件就叫“模块”。使用时用 import 引入,再通过 模块名.函数名 的方式调用,就不会互相干扰。看几个例子:
|
python |
两个文件放在同一目录下,main.py 里 import mymath 之后,就能用 mymath.add(3, 5) 调用模块里的函数了。
05 入口函数:if __name__ == "__main__"
写脚本时,我们常常希望:直接运行这个文件时执行某些代码,被别的文件导入时就不执行。Python 用 if __name__ == "__main__" 来实现,这一判断常被称为程序的“入口”。原理是:每个模块都有一个 __name__ 属性,文件被直接运行时它的值是 "__main__",被 import 时值是模块名。看几个例子:
|
python |
直接运行 main.py 会输出 8;如果别的文件 import main,这段 print 不会执行。把测试代码放进这个判断里,既能直接运行验证,又不会在别人引用你模块时被误执行。
06 练习题
学了这么多,来做三道题巩固一下。参考答案附在每道题后面,建议先自己写,再对照检查:
1. 写一个函数 is_even(n),判断整数 n 是否为偶数,是则返回 True,否则返回 False。
|
python |
2. 写一个带默认参数的函数 power(base, exp=2),返回 base 的 exp 次方;分别调用 power(3) 和 power(2, 3)。
|
python |
3. 写一个可变参数函数 average(*numbers),求任意多个数的平均值。
|
python |
07 小结
这一章的要点:def 定义函数、return 返回结果;默认参数让调用更灵活;*args 接收任意个数的参数;模块(.py 文件)用 import 组织代码、避免命名冲突;if __name__ == "__main__" 控制程序的入口。函数把代码变成“积木”,模块把积木分门别类放好——接下来,就可以搭更大的程序了。
以上就是“Python 函数与模块入门:把代码装进“盒子”,随用随取”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14589/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料