编程也要讲究颜值?10个技巧让你的代码既实用又好看

前言

编写优雅的代码不仅能够提高程序的可读性和可维护性,还能让你的编程技能更上一层楼。今天,我们将分享10个有助于你写出更优雅Python代码的习惯。

Python入门基础教程【文末有惊喜福利🎁】

1. 遵循PEP 8风格指南

理论知识:PEP 8是Python官方推荐的代码风格指南,它包含了命名规则、缩进、空格、行长度等建议。

实践示例

# 不好的写法
def  my_function  (   x  ,  y  ) :
    return x + y

# 好的写法(遵循PEP 8)
def my_function(x, y):
    return x + y

2. 使用列表推导式

理论知识:列表推导式是一种简洁地创建列表的方法,可以替代循环和条件语句。

实践示例

# 不好的写法
squares = []
for x in range(10):
    squares.append(x ** 2)

# 好的写法
squares = [x ** 2 for x in range(10)]

3. 利用f-string进行字符串格式化

理论知识:f-string是从Python 3.6开始引入的一种字符串格式化方式,更加直观且性能更好。

实践示例

name = "Alice"
age = 25

# 不好的写法
message = "My name is %s and I am %d years old." % (name, age)

# 好的写法
message = f"My name is {name} and I am {age} years old."

4. 尽量避免全局变量

理论知识:全局变量容易引起混乱,尤其是在大型项目中。使用局部变量可以减少错误和调试时间。

实践示例

# 不好的写法
count = 0

def increment():
    global count
    count += 1

# 好的写法
def increment(count):
    return count + 1

5. 使用异常处理

理论知识:异常处理可以让程序在遇到错误时优雅地失败,而不是崩溃。

实践示例

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Cannot divide by zero.")

6. 使用生成器表达式

理论知识:生成器表达式类似于列表推导式,但返回的是一个迭代器,节省内存。

实践示例

# 不好的写法
numbers = [x * 2 for x in range(1000000)]

# 好的写法
numbers = (x * 2 for x in range(1000000))

7. 代码重构和模块化

理论知识:重构代码可以提高其质量和可维护性。模块化则是将代码分解为独立的、可重用的部分。

实践示例

# 不好的写法
def calculate_area(radius):
    pi = 3.14
    return pi * radius * radius

# 好的写法
pi = 3.14

def calculate_area(radius):
    return pi * radius * radius

这里,我们可以进一步将pi定义在一个单独的模块中,供多个函数使用。

8. 注释和文档字符串

理论知识:良好的注释和文档字符串可以提高代码的可读性和可维护性。

实践示例

def calculate_area(radius):
    """
    Calculate the area of a circle.
    
    Args:
        radius (float): The radius of the circle.
        
    Returns:
        float: The area of the circle.
    """
    return pi * radius * radius

9. 使用类型注解

理论知识:类型注解可以帮助IDE和linter更好地理解和检查代码。

实践示例

def greet(name: str) -> str:
    return f"Hello, {name}"

10. 单元测试

理论知识:单元测试可以确保代码的各个部分按预期工作,减少未来的bug。

实践示例

import unittest

class TestMathFunctions(unittest.TestCase):
    def test_calculate_area(self):
        self.assertEqual(calculate_area(1), 3.14)

if __name__ == "__main__":
    unittest.main()

通过遵循这些习惯,你将能够写出更加清晰、高效和易于维护的Python代码。

 读者福利:对Python感兴趣的童鞋,为此小编专门给大家准备好了Python全套的学习资料

 全套Python学习资料分享《python安装工具&全套学习资料》免费分享(安全链接,放心点击)


继续深入:实战案例分析

让我们通过一个实战案例来深入理解如何综合运用上述习惯,以提升代码的优雅度。

案例:文本分析工具

假设我们需要开发一个简单的文本分析工具,用于统计文本文件中的单词数量。我们将逐步应用上述习惯来优化代码。

步骤1:读取文件并统计单词

首先,我们实现基本的功能,即读取文件并统计其中的单词数量。

不优雅的代码

def word_count(filename):
    with open(filename, 'r') as file:
        text = file.read()
        words = text.split()
        return len(words)

改进后的代码

  • 应用PEP 8风格指南。

  • 引入异常处理,使程序更加健壮。

  • 添加类型注解,提高代码可读性。

from typing import TextIO

def word_count(filename: str) -> int:
    """Counts the number of words in a given file."""
    try:
        with open(filename, 'r') as file:  # type: TextIO
            text = file.read()
            words = text.split()
            return len(words)
    except FileNotFoundError:
        print(f"The file {filename} does not exist.")
        return 0

步骤2:增加功能和模块化

接下来,我们希望扩展工具的功能,包括计算平均单词长度和最常出现的单词。同时,我们将代码模块化,使其更易于维护。

不优雅的代码

def main():
    filename = "example.txt"
    print(f"Word count: {word_count(filename)}")
    print(f"Average word length: {average_word_length(filename)}")
    print(f"Most common word: {most_common_word(filename)}")

改进后的代码

  • 将每个功能封装到单独的函数中,提高模块化。

  • 使用生成器表达式来计算平均单词长度,节省内存。

def average_word_length(filename: str) -> float:
    """Calculates the average word length in a given file."""
    with open(filename, 'r') as file:
        words = (len(word) for line in file for word in line.split())
        return sum(words) / word_count(filename)

def most_common_word(filename: str) -> str:
    """Finds the most common word in a given file."""
    from collections import Counter
    with open(filename, 'r') as file:
        words = (word for line in file for word in line.split())
        return Counter(words).most_common(1)[0][0]

def main():
    filename = "example.txt"
    print(f"Word count: {word_count(filename)}")
    print(f"Average word length: {average_word_length(filename)}")
    print(f"Most common word: {most_common_word(filename)}")

步骤3:添加单元测试

最后,我们编写单元测试以确保所有功能正常运行。

测试代码

import unittest

class TestTextAnalyzer(unittest.TestCase):
    def setUp(self):
        self.filename = "test.txt"
        with open(self.filename, 'w') as file:
            file.write("This is a test text. This text contains some words.")

    def tearDown(self):
        import os
        os.remove(self.filename)

    def test_word_count(self):
        self.assertEqual(word_count(self.filename), 10)

    def test_average_word_length(self):
        self.assertEqual(average_word_length(self.filename), 4.0)

    def test_most_common_word(self):
        self.assertEqual(most_common_word(self.filename), "this")

if __name__ == "__main__":
    unittest.main()

通过这个案例,我们看到了如何将上述习惯应用于实际编程场景中,从而编写出既优雅又高效的代码。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、收藏、转发吧!

文末福利

 读者福利:对Python感兴趣的童鞋,为此小编专门给大家准备好了Python全套的学习资料

 全套Python学习资料分享《python安装工具&全套学习资料》免费分享(安全链接,放心点击)

  Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片​​

视频教程

大信息时代,传统媒体远不如视频教程那么生动活泼,一份零基础到精通的全流程视频教程分享给大家

图片​​

实战项目案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片​​

图片​​

副业兼职路线

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值