Practical Python项目教程:深入理解Python函数与异常处理

Practical Python项目教程:深入理解Python函数与异常处理

practical-python Practical Python Programming (course by @dabeaz) practical-python 项目地址: https://gitcode.com/gh_mirrors/pr/practical-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

总结

通过本文的学习,你应该已经掌握了:

  1. 如何定义和使用自定义函数
  2. 如何导入和使用Python标准库
  3. 异常处理的基本方法
  4. 如何将脚本转换为可重用的函数
  5. 使用csv模块处理CSV文件
  6. 处理命令行参数

这些技能是Python编程的基础,掌握它们将大大提高你的编程效率和代码质量。在实际项目中,合理使用函数和异常处理可以使代码更加健壮和易于维护。

practical-python Practical Python Programming (course by @dabeaz) practical-python 项目地址: https://gitcode.com/gh_mirrors/pr/practical-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方玉蜜United

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值