# 定义函数
"""
def 函数名(参数1, 参数2):
执行代码...
return 返回值 # 可选
# 调用函数
# 无参数函数
函数名(值1, 值2)
"""
# 定义无参函数
def show_welcome():
"""显示欢迎信息"""
print("🌟 欢迎使用自动化测试系统 🌟")
print("请选择测试模块...")
# 调用函数
show_welcome()
#有参函数
# 计算测试用例执行时间
def calc_exec_time(case_count, avg_time):
"""计算总执行时间"""
total_time = case_count * avg_time
return round(total_time, 2) # 保留2位小数
# 调用函数
time = calc_exec_time(50, 1.8)
print(f"总执行时间: {time}分钟") # 输出: 总执行时间: 90.0分钟
#位置参数
def create_user(name, age, role):
print(f"创建用户: {name}({age}岁), 角色:{role}")
# 必须按顺序传递
create_user("张三", 25, "测试工程师") # ✅ 正确
create_user(25, "测试工程师", "张三") # ❌ 顺序错误!
#关键字参数
create_user(role="管理员", name="李四", age=30)
# 输出: 创建用户: 李四(30岁), 角色:管理员
#默认参数
def connect_db(ip, port=3306, user="admin", pwd="123456"):
print(f"连接数据库: {ip}:{port} 用户:{user}")
connect_db("192.168.1.100") # 使用默认port/user/pwd
connect_db("10.0.0.1", port=5432) # 覆盖部分默认值、
#函数返回值
def analyze_data(data):
"""分析测试数据"""
min_val = min(data)
max_val = max(data)
avg_val = sum(data)/len(data)
return min_val, max_val, avg_val # 返回元组(min, max, avg)
# 接收返回值
results = analyze_data([8.2, 7.5, 9.1, 6.7])
print(results)
print(f"最小值:{results[0]}, 最大值:{results[1]}, 平均值:{results[2]:.2f}")
"""
参数类型 特点 示例
位置参数 按定义顺序传递 func(a, b)
关键字参数 指定参数名传递,顺序可变 func(b=2, a=1)
默认参数 定义时赋予默认值 def func(a, b=5)
位置参数 > 关键字参数 > 默认参数
"""
#三类参数
def report_bug(bug_id, severity="P2", assignee="测试组"):
"""提交缺陷报告"""
print(f"[ID:{bug_id}] 严重度:{severity} 负责人:{assignee}")
# 调用方式:
print(report_bug("BUG-2024-001")) # 位置参数 → [ID:BUG-2024-001] 严重度:P2 负责人:测试组
report_bug(severity="P1", bug_id="BUG-2024-002") # 关键字参数 → [ID:BUG-2024-002] 严重度:P1 负责人:测试组
#可变参数(*args和**kwargs)
# *args:可变位置参数(接收任意数量位置参数)
def calculate_avg(*scores):
"""计算任意数量测试成绩的平均分"""
total = sum(scores)
return total / len(scores) if scores else 0
# 调用示例
print(calculate_avg(85, 90, 78)) # 输出: 84.333
print(calculate_avg(95, 88)) # 输出: 91.5
print(calculate_avg(100)) # 输出: 100.0
# **kwargs:可变关键字参数(接收任意数量键值对)
def test_login(**credentials):
"""测试登录功能,支持不同参数组合"""
# 1. 提取必要参数(带默认值)
username = credentials.get("username", "admin") # 默认用户名
password = credentials.get("password", "123456") # 默认密码
# 2. 打印动态参数
print(f"测试登录: 用户名={username}, 密码={password}")
# 3. 处理可选参数
if "captcha" in credentials:
print(f"验证码: {credentials['captcha']}")
if "remember_me" in credentials:
print("✅ 记住登录状态")
# 调用示例
test_login() # 使用默认参数
test_login(username="tester", password="p@ssw0rd") # 基础登录
test_login(username="user", captcha="AX9Y", remember_me=True) # 带验证码和记住我
# 组合使用 *args 和 **kwargs
def run_test(test_name, *test_data, **config):
"""执行测试用例(带配置参数)"""
print(f"\n执行测试: {test_name}")
print(f"测试数据: {test_data}")
print(f"浏览器: {config.get('browser', 'Chrome')}")
print(f"超时: {config.get('timeout', 30)}秒")
# 调用示例
run_test("搜索功能", "Python教程", "API文档")
run_test("支付功能", "信用卡", "余额支付",
browser="Firefox", timeout=45, env="staging")
# 参数顺序规则(必须遵守)
def valid_order(a, b, *args, c=10, **kwargs):
"""展示正确的参数顺序"""
print(f"a={a}, b={b}, args={args}, c={c}, kwargs={kwargs}")
# 正确调用
valid_order(1, 2, 3, 4, c=20, d=5, e=6) # a=1,b=2,args=(3,4),c=20,kwargs={'d':5,'e':6}
# 错误调用(将导致语法错误)
# def invalid_order(a, **kwargs, *args): # ❌ 语法错误
# def invalid_order(a, **kwargs, b): # ❌ 语法错误
#1. 基础异常捕获
def divide(x, y):
try:
result = x / y
except ZeroDivisionError: # 捕获特定异常
print("错误:除数不能为0!")
else: # 无异常时执行
return result
print(divide(10, 2)) # 输出: 5.0
print(divide(10, 0)) # 输出: 错误:除数不能为0!
#多异常处理
def parse_user_input(input_str):
try:
num = int(input_str) # 可能触发ValueError
if num < 0:
raise ValueError("输入不能为负数") # 主动抛出异常
except ValueError as ve: # 捕获值错误
print(f"输入错误: {ve}")
except Exception as e: # 捕获其他所有异常
print(f"未知错误: {e}")
finally: # 无论是否异常都会执行
print("处理完成")
parse_user_input("abc") # 输入错误: invalid literal for int()...
parse_user_input("-5") # 输入错误: 输入不能为负数
def add(a, b):
"""加法运算"""
return a + b
def subtract(a, b):
"""减法运算"""
return a - b
def multiply(a, b):
"""乘法运算"""
return a * b
def divide(a, b):
"""除法运算,处理除数为零的情况"""
if b == 0:
return "错误:除数不能为零!"
return a / b
def calculator():
"""主计算器函数"""
print("🌟 简易四则运算计算器 🌟")
while True:
print("\n请选择操作:")
print("1. 加法")
print("2. 减法")
print("3. 乘法")
print("4. 除法")
print("5. 退出")
choice = input("输入你的选择 (1/2/3/4/5): ")
# 退出条件
if choice == '5':
print("感谢使用,再见!")
break
# 验证选择有效性
if choice not in ['1', '2', '3', '4']:
print("无效的选择,请重新输入!")
continue
# 获取操作数
try:
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
except ValueError:
print("输入错误,请输入有效的数字!")
continue
# 执行计算并显示结果
if choice == '1':
result = add(num1, num2)
print(f"{num1} + {num2} = {result}")
elif choice == '2':
result = subtract(num1, num2)
print(f"{num1} - {num2} = {result}")
elif choice == '3':
result = multiply(num1, num2)
print(f"{num1} × {num2} = {result}")
elif choice == '4':
result = divide(num1, num2)
print(f"{num1} ÷ {num2} = {result}")
calculator()
优化下这个文件,不适合0基础的同学
最新发布