Python脚本多项实用技巧详解

2023-12-15 07:21:22

3ad981ac3b14bc4c6d3c3e53c4fda5a0.jpeg

更多Python学习内容:ipengtao.com

大家好,我是彭涛,今天为大家分享 Python脚本多项实用技巧详解,全文3500字,阅读大约10分钟。

在 Python 编程中,不仅要追求代码的功能实现,还要注重代码的可读性、可维护性和性能。本文将介绍一些改进 Python 脚本代码的有用技巧,通过更丰富的示例代码帮助大家理解并应用这些技巧。

使用列表推导简化代码

列表推导是 Python 中强大而简洁的特性,可以用一行代码生成列表。考虑以下示例,将一个列表中的每个元素平方:

#?传统方式
numbers?=?[1,?2,?3,?4,?5]
squared_numbers?=?[]
for?num?in?numbers:
????squared_numbers.append(num?**?2)

#?使用列表推导
squared_numbers?=?[num?**?2?for?num?in?numbers]

利用装饰器提高代码可读性

装饰器是 Python 中强大的工具,可以用于修改函数的行为。通过装饰器,可以提高代码的可读性和重用性。

以下是一个简单的装饰器示例,用于计算函数执行时间:

import?time

def?calculate_execution_time(func):
????def?wrapper(*args,?**kwargs):
????????start_time?=?time.time()
????????result?=?func(*args,?**kwargs)
????????end_time?=?time.time()
????????print(f"{func.__name__}?执行时间:?{end_time?-?start_time}?秒")
????????return?result
????return?wrapper

@calculate_execution_time
def?example_function():
????#?函数的实际逻辑
????time.sleep(2)

example_function()

使用 collections 模块提高性能

Python 的 collections 模块提供了一些有用的数据结构,例如 defaultdictCounter,可以提高代码性能和简化操作。

以下是一个使用 Counter 统计列表元素出现次数的示例:

from?collections?import?Counter

numbers?=?[1,?2,?3,?1,?2,?3,?1,?2,?3,?4,?5,?4,?5,?4,?5]
number_counts?=?Counter(numbers)
print(number_counts)

使用 try-except-else 优雅处理异常

在处理异常时,try-except-else 结构能够提高代码的清晰度。else 语句块中的代码只有在没有异常发生时才会执行。

以下是一个简单的文件读取示例:

try:
????with?open('example.txt',?'r')?as?file:
????????content?=?file.read()
except?FileNotFoundError:
????print("文件未找到")
else:
????print("文件读取成功")
????#?对文件内容进行进一步处理

使用 enumerate 获取索引和值

在迭代列表时,enumerate 函数可以同时获取索引和对应的值,避免使用额外的变量。

以下是一个示例:

fruits?=?['apple',?'banana',?'orange']
for?index,?value?in?enumerate(fruits):
????print(f"索引:?{index},?值:?{value}")

利用生成器优化内存占用

生成器是一种节省内存并提高性能的工具。相比于列表,生成器一次只产生一个值,适用于处理大量数据。

以下是一个生成器的简单示例,用于生成斐波那契数列:

def?fibonacci_generator(n):
????a,?b?=?0,?1
????for?_?in?range(n):
????????yield?a
????????a,?b?=?b,?a?+?b

#?使用生成器获取斐波那契数列前?10?项
fibonacci_sequence?=?list(fibonacci_generator(10))
print(fibonacci_sequence)

使用 itertools 模块简化迭代操作

itertools 模块提供了一些用于高效迭代的工具函数。

以下是一个使用 itertools.chain 连接多个可迭代对象的示例:

from?itertools?import?chain

list1?=?[1,?2,?3]
list2?=?['a',?'b',?'c']
list3?=?[True,?False,?True]

combined_list?=?list(chain(list1,?list2,?list3))
print(combined_list)

使用 with 语句简化资源管理

with 语句用于简化资源管理,例如文件操作或数据库连接。通过使用 with 语句,可以确保在离开代码块时资源被正确释放。

以下是一个文件读取的示例:

with?open('example.txt',?'r')?as?file:
????content?=?file.read()
????#?在此处进行文件操作,无需手动关闭文件

利用 zip 函数进行并行迭代

zip 函数可以将多个可迭代对象的元素一一配对,用于并行迭代。

以下是一个简单的示例:

names?=?['Alice',?'Bob',?'Charlie']
ages?=?[25,?30,?35]

for?name,?age?in?zip(names,?ages):
????print(f"姓名:?{name},?年龄:?{age}")

使用 functools 模块提高函数健壮性

functools 模块提供了一些有用的函数,用于增强函数的健壮性和可重用性。

以下是一个使用 functools.partial 创建偏函数的示例:

from?functools?import?partial

#?常规函数
def?power(base,?exponent):
????return?base?**?exponent

#?创建偏函数
square?=?partial(power,?exponent=2)
cube?=?partial(power,?exponent=3)

print(square(4))??#?输出?16
print(cube(3))????#?输出?27

使用 contextlib 简化上下文管理器的创建

contextlib 模块提供了一些简化上下文管理器创建的工具函数,例如 contextmanager 装饰器。

以下是一个使用 contextmanager 创建自定义上下文管理器的示例:

from?contextlib?import?contextmanager

@contextmanager
def?custom_context():
????print("进入上下文")
????#?执行一些前处理操作
????yield
????#?执行一些后处理操作
????print("离开上下文")

#?使用自定义上下文管理器
with?custom_context():
????print("在上下文中执行操作")

使用 f-字符串

f-字符串是 Python 3.6 引入的一项功能,可以在字符串中直接嵌入表达式。这样的字符串更加简洁、直观。

以下是一个示例:

name?=?"Alice"
age?=?30

#?使用?f-字符串
message?=?f"姓名:?{name},?年龄:?{age}"
print(message)

利用 collections.namedtuple 创建具名元组

collections.namedtuple 是一个工厂函数,用于创建具有命名字段的元组。它可以增强代码的可读性。

以下是一个示例:

from?collections?import?namedtuple

#?创建具名元组类型
Person?=?namedtuple('Person',?['name',?'age',?'gender'])

#?创建具名元组实例
alice?=?Person(name='Alice',?age=25,?gender='Female')

#?访问字段
print(alice.name)???#?输出?'Alice'
print(alice.age)????#?输出?25
print(alice.gender)?#?输出?'Female'

总结

在这篇文章中,深入探讨了改进 Python 脚本代码的多个有用技巧,通过丰富的示例代码展示了每个技巧的具体应用场景。从使用列表推导简化代码到利用生成器优化内存占用,从使用 itertools 模块简化迭代操作到使用 with 语句简化资源管理,这些建议旨在提高代码的可读性、可维护性和性能。

通过学习列表推导、装饰器、生成器、itertoolsfunctoolscontextlib、f-字符串等特性和模块,可以更好地理解 Python 的强大之处,并在实际编码中灵活应用这些技巧。这不仅有助于提高代码的质量,还有助于提升个人编程水平。

在日常开发中,写出高效、优雅、易维护的代码是每位 Python 开发者的追求。通过运用这些技巧,能够更好地处理各种编程任务,同时提高代码的效率和质量。希望大家通过这篇文章能够深刻理解这些技巧,并在实际项目中加以应用,从而不断提升自己的 Python 编程能力。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

? 100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

58fe5d76ab83b2a25b62ddc0df8755dd.png

点击“阅读原文”,获取更多学习内容

文章来源:https://blog.csdn.net/wuShiJingZuo/article/details/135007793
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。