Practical Python项目教程:深入理解Python函数与异常处理
概述
在Python编程中,函数和异常处理是两个至关重要的概念。本文将通过Practical Python项目的实例,深入浅出地讲解如何有效使用函数组织代码,以及如何处理程序运行中可能出现的异常情况。
函数基础
自定义函数
函数是将相关代码组织在一起的绝佳方式,可以提高代码的复用性和可读性。定义函数的基本语法如下:
def 函数名(参数):
'''函数文档字符串'''
# 函数体
return 返回值
例如,计算前n个整数和的函数:
def sumcount(n):
'''返回前n个整数的和'''
total = 0
while n > 0:
total += n
n -= 1
return total
调用函数时直接使用函数名加括号,并传入相应参数:
result = sumcount(100) # 计算1到100的和
函数文档
良好的函数应该包含文档字符串,用于说明函数的功能。文档字符串位于函数定义的第一行,用三引号包围:
def greeting(name):
'''向指定名称发出问候'''
print('Hello', name)
可以通过help()
函数查看函数的文档:
help(greeting)
库函数的使用
Python标准库提供了大量现成的模块和函数。使用import
语句导入模块后,可以调用其中的函数:
import math
x = math.sqrt(10) # 计算平方根
import urllib.request
response = urllib.request.urlopen('http://example.com')
data = response.read()
异常处理机制
异常的概念
当Python遇到无法处理的错误时,会抛出异常。如果不捕获异常,程序将终止运行并显示错误信息:
>>> int('N/A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'N/A'
捕获异常
使用try-except
语句可以捕获并处理异常:
try:
shares = int(fields[1])
except ValueError:
print("无法解析行:", line)
抛出异常
使用raise
语句可以主动抛出异常:
if error_condition:
raise RuntimeError('错误描述')
实践练习
练习1:将脚本转换为函数
将之前编写的计算投资组合成本的脚本转换为函数:
def portfolio_cost(filename):
'''计算投资组合总成本'''
total = 0.0
with open(filename, 'rt') as f:
next(f) # 跳过标题行
for line in f:
fields = line.split(',')
try:
shares = int(fields[1])
price = float(fields[2])
total += shares * price
except ValueError:
print(f"警告: 无法解析行: {line.strip()}")
return total
练习2:使用csv模块改进
使用Python标准库中的csv
模块可以更优雅地处理CSV文件:
import csv
def portfolio_cost(filename):
'''使用csv模块计算投资组合成本'''
total = 0.0
with open(filename, 'rt') as f:
rows = csv.reader(f)
headers = next(rows)
for row in rows:
try:
shares = int(row[1])
price = float(row[2])
total += shares * price
except ValueError:
print(f"警告: 无效数据: {row}")
return total
练习3:命令行参数处理
使脚本能够接受命令行参数:
import sys
if len(sys.argv) == 2:
filename = sys.argv[1]
else:
filename = 'Data/portfolio.csv'
cost = portfolio_cost(filename)
print('总成本:', cost)
运行方式:
python3 pcost.py Data/portfolio.csv
总结
通过本文的学习,你应该已经掌握了:
- 如何定义和使用自定义函数
- 如何导入和使用Python标准库
- 异常处理的基本方法
- 如何将脚本转换为可重用的函数
- 使用csv模块处理CSV文件
- 处理命令行参数
这些技能是Python编程的基础,掌握它们将大大提高你的编程效率和代码质量。在实际项目中,合理使用函数和异常处理可以使代码更加健壮和易于维护。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考