Python 零基础第四课:函数和模块,让代码从“能跑”变成“好用”
前面几课我们已经学过变量、数据类型、条件判断和循环。到这里,你已经可以写出一些简单逻辑了。
不过,当代码越来越多时,一个新问题会出现:重复代码变多,程序越来越乱。

比如你要多次打印欢迎语:
print("欢迎学习 Python")
print("今天也要加油")
print("欢迎学习 Python")
print("今天也要加油")
print("欢迎学习 Python")
print("今天也要加油")
能运行,但很啰嗦。
这时候就需要函数。
一、函数是什么?
函数可以理解成一个“打包好的小工具”。
你把一段代码放进函数里,给它起一个名字。以后想用这段代码时,只需要调用这个名字。
定义函数用 def:
def say_hello():
print("欢迎学习 Python")
print("今天也要加油")
调用函数:
say_hello()
运行结果:
欢迎学习 Python
今天也要加油
函数最大的好处是:写一次,可以用很多次。
二、函数的基本格式
函数最常见的格式是:
def 函数名():
函数里的代码
注意两点:
- 函数名后面要有小括号
- 函数体要缩进
比如:
def show_menu():
print("1. 查看余额")
print("2. 存钱")
print("3. 取钱")
调用:
show_menu()
三、带参数的函数
刚才的函数每次输出的内容都是固定的。如果我们希望函数更灵活,就可以使用参数。
def say_hello(name):
print("你好," + name)
调用时传入不同的名字:
say_hello("小明")
say_hello("小红")
运行结果:
你好,小明
你好,小红
这里的 name 就是参数。
你可以把参数理解成:调用函数时临时放进去的数据。
四、多个参数
函数可以接收多个参数。
def add(a, b):
result = a + b
print(result)
调用:
add(3, 5)
add(10, 20)
运行结果:
8
30
如果参数有多个,传入时要注意顺序。
def introduce(name, age):
print("我叫", name)
print("今年", age, "岁")
introduce("小明", 18)
五、return 返回结果
有些函数不只是打印内容,而是要把计算结果返回给我们。
这时候用 return。
def add(a, b):
return a + b
调用函数并接收结果:
total = add(3, 5)
print(total)
运行结果:
8
print() 是把内容显示出来,return 是把结果交回给调用者。
这两者不要混淆。
六、函数小练习:判断是否成年
我们把前面学过的条件判断放进函数里。
def check_adult(age):
if age >= 18:
return "已成年"
else:
return "未成年"
result = check_adult(20)
print(result)
运行结果:
已成年
再调用一次:
print(check_adult(15))
运行结果:
未成年
这样一来,只要以后需要判断年龄,就可以直接复用 check_adult()。
七、函数让代码更清晰
来看一个简单例子:计算两个数的平均值。
不使用函数:
a = 80
b = 90
average = (a + b) / 2
print(average)
c = 70
d = 100
average = (c + d) / 2
print(average)
使用函数:
def get_average(x, y):
return (x + y) / 2
print(get_average(80, 90))
print(get_average(70, 100))
是不是清爽很多?
函数不是为了炫技,而是为了让代码更好读、更好改。

八、模块是什么?
学完函数后,再来看模块就很容易了。
模块可以理解成一个 Python 文件,里面放了一些现成的函数、变量或类。
我们可以通过 import 使用模块。
比如 Python 自带一个数学模块 math:
import math
print(math.sqrt(16))
运行结果:
4.0
这里的 sqrt 是求平方根的函数。
九、为什么要用模块?
因为很多功能别人已经帮我们写好了。
比如:
- 数学计算可以用
math - 随机数可以用
random - 时间日期可以用
datetime
我们不需要什么都从零开始写。
编程不是每次都重新造工具,而是学会找到合适的工具,并正确使用它。
十、random 模块:生成随机数
先导入模块:
import random
生成 1 到 10 之间的随机整数:
number = random.randint(1, 10)
print(number)
每次运行,结果可能都不一样。
我们可以做一个简单的抽奖程序:
import random
names = ["小明", "小红", "小刚", "小美"]
winner = random.choice(names)
print("中奖的是:", winner)
这里的 choice() 会从列表中随机选一个元素。
十一、datetime 模块:获取当前日期
import datetime
today = datetime.date.today()
print(today)
它会输出当前日期,例如:
2026-06-12
如果你写打卡程序、日志程序、记账程序,日期和时间就很常用。
十二、from import 写法
除了直接 import 模块名,还可以只导入模块里的某个功能。
from random import randint
number = randint(1, 10)
print(number)
这种写法的好处是调用时更短。
但对于新手来说,一开始更推荐使用:
import random
然后写:
random.randint(1, 10)
这样你能清楚地知道这个函数来自哪个模块。
十三、自己写一个模块
模块并不神秘。你自己写的 .py 文件,也可以是模块。
假设我们创建一个文件 tools.py:
def add(a, b):
return a + b
def multiply(a, b):
return a * b
再创建一个文件 main.py:
import tools
print(tools.add(3, 5))
print(tools.multiply(4, 6))
只要两个文件在同一个文件夹里,main.py 就可以导入 tools.py。
这就是模块最基础的用法。
十四、新手容易踩的坑
1. 定义了函数但没有调用
def hello():
print("Hello")
这段代码只是定义函数,不会输出内容。
需要调用:
hello()
2. 忘记写括号
错误写法:
hello
正确写法:
hello()
3. 参数数量不匹配
def add(a, b):
return a + b
print(add(3))
这个函数需要两个参数,但只传了一个,会报错。
正确写法:
print(add(3, 5))
4. 文件名和模块名冲突
如果你把自己的文件命名为 random.py,再写:
import random
就可能导入到你自己的文件,而不是 Python 自带的 random 模块。
所以新手不要用 random.py、math.py、datetime.py 这类名字给自己的文件命名。
十五、本课总结
这一课我们学习了:
- 如何用
def定义函数 - 如何调用函数
- 什么是参数
- 什么是
return - 函数为什么能减少重复代码
- 如何使用
import导入模块 - 常见内置模块:
math、random、datetime - 如何创建并导入自己的模块
函数让代码从“能跑”变成“好维护”,模块让我们可以使用别人已经写好的工具。
到这里,你已经不只是会写几行 Python 代码了,而是开始接触真正的代码组织方式。
下一课可以继续学习:字符串和列表的常用操作。这是写爬虫、数据处理、自动化脚本之前必须掌握的一块基础。
更多推荐
所有评论(0)