Python编程风格

Habit 1:确保模块代码只在直接运行时执行

  • 说明:在 Python 中,if __name__ == "__main__": 用于判断当前脚本是否被直接运行。这种做法可以确保,当模块被导入到其他文件时,模块中的某些代码(如函数调用)不会被执行。

  • 案例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def connect():
    print("Connecting to the server...")
    # 模拟连接服务器
    print("Connected!")

    if __name__ == "__main__":
    connect()
    # 如果不用if判断,直接调用connect。
    connect()# 在被其他文件调用def connect时,会先运行此行函数调用代码。

Habit 2:使用类型注解

  • 说明:Python 从 3.5 版本开始引入了类型注解,这使得代码更易于理解和维护。类型注解有助于开发者和工具理解函数或变量应该使用哪种类型的数据。

  • 案例

    1
    2
    3
    4
    5
    def sayyes() -> None:
    print("Yes!")

    def sayno() -> None:
    print("No!")

Habit 3:函数功能分离

  • 说明:将函数中的小功能进行良好的分离,可以使代码更加清晰、易于理解和维护。每个函数应该只做一件事情,并做好它。

  • 案例

    1
    2
    def function(name: str, age: int) -> None:
    print(f"Name: {name}, Age: {age}")

Habit 4:正确使用变量类型

  • 说明:在定义变量时,确保使用正确的类型。错误的类型可能会导致程序运行时出现意外的错误或行为。

  • 案例

    • 错误示例:age: int = '10'(这里将字符串 '10' 赋值给了应该是整型的 age
    • 正确示例:age: int = 10
    1
    2
    3
    4
    5
    6
    #对比下面两种写法
    def upper_everything(elements):
    return [element.upper() for element in elements]

    def upper_everything(elements: list[str]) -> list[str]:
    return [element.upper() for element in elements]

Habit 5:多用列表推导式

  • 说明:列表推导式是 Python 中快速生成列表的一种方法,它可以用一行代码替代多行循环语句,使代码更加简洁。

  • 案例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    people: list[str] = ['James', 'Charlotte', 'Stephany', 'Mario', 'Sandra']

    # long_names: list[str] = []
    # for person in people:
    # if len(person) > 7:
    # long_names.append(person)

    long_names: list[str] = [p for p in people if len(p) > 7]
    print(f'Long names: {long_names}')
    1
    2
    3
    4
    # 使用列表推导式创建新列表,其中包含原始列表中偶数的平方
    even_squares = [x**2 for x in numbers if x % 2 == 0]
    # 打印新列表
    print(even_squares)