一、函数:代码复用的基石
1. 函数的定义与调用
函数用于封装重复操作的代码块,通过参数接收输入,并返回结果。
# 定义函数
def greet(name):
return f"你好,{name}!"
# 调用函数
message = greet("小明")
print(message) # 输出:你好,小明!
2. 参数与返回值
-
位置参数:按顺序传递参数。
-
默认参数:为参数提供默认值(需定义在参数列表末尾)。
-
返回值:使用
return
返回结果,若无返回值则默认返回None
。
def calculate_area(width, height=2): # height是默认参数
area = width * height
return area
print(calculate_area(3)) # 输出6(使用默认height=2)
print(calculate_area(3, 4)) # 输出12
3. 函数的作用域
-
局部变量:函数内定义的变量,仅在函数内部有效。
-
全局变量:函数外定义的变量,需用
global
关键字声明修改。
count = 10 # 全局变量
def update_count():
global count # 声明使用全局变量
count += 5
update_count()
print(count) # 输出15
二、模块与包:代码的组织方式
1. 模块的导入
模块是包含Python代码的 .py
文件,可通过 import
导入。
# 导入整个模块
import math
print(math.sqrt(16)) # 输出4.0
# 导入特定功能
from random import randint
print(randint(1, 10)) # 生成1到10的随机整数
# 给模块起别名
import numpy as np
2. 自定义模块
创建一个 utils.py
文件:
# utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
在另一个文件中使用:
import utils
print(utils.add(2, 3)) # 输出5
3. 包(Package)
包是包含多个模块的文件夹,需包含一个 __init__.py
文件(可以为空)。目录结构示例:
my_package/
__init__.py
module1.py
module2.py
导入方式:
from my_package import module1
4. __name__
的作用
当模块作为主程序运行时,__name__
的值为 "__main__"
,否则为模块名。常用于模块测试:
# my_module.py
def test():
print("测试函数")
if __name__ == "__main__": # 直接运行该文件时执行
test()
五、综合案例:简易计算器
# 定义计算函数
def calculate(a, b, operator):
if operator == "+":
return a + b
elif operator == "-":
return a - b
elif operator == "*":
return a * b
elif operator == "/":
if b == 0:
raise ZeroDivisionError("除数不能为零")
return a / b
else:
raise ValueError("无效的运算符")
# 主程序
try:
num1 = float(input("请输入第一个数字:"))
num2 = float(input("请输入第二个数字:"))
op = input("请输入运算符(+、-、*、/):")
result = calculate(num1, num2, op)
print(f"结果:{result}")
except ValueError as e:
print(f"输入错误:{e}")
except ZeroDivisionError as e:
print(e)
五、总结与练习
核心知识点:
-
函数:封装代码逻辑,提高复用性。
-
模块与包:组织代码结构,实现功能模块化。
-
错误处理:增强程序健壮性,优雅处理异常。