Skip to content

第18章:Python 代码规范与安全防护

18.1 代码规范

良好的代码规范可以提高代码的可读性、可维护性和可扩展性,是每个Python开发者必须遵守的基本准则。

命名规范

  • 变量名:使用小写字母,单词之间用下划线分隔(snake_case)

    • 示例:user_nameagestudent_id
  • 函数名:使用小写字母,单词之间用下划线分隔(snake_case)

    • 示例:get_user_info()calculate_average()
  • 类名:使用大驼峰命名法(CamelCase),每个单词首字母大写

    • 示例:PersonStudentUserManager
  • 常量:使用全大写字母,单词之间用下划线分隔

    • 示例:MAX_AGEPIDEFAULT_TIMEOUT
  • 模块名:使用小写字母,单词之间用下划线分隔

    • 示例:user_manager.pydata_processing.py
  • 包名:使用小写字母,单词之间用下划线分隔

    • 示例:my_packageutils

缩进规范

  • 使用4个空格进行缩进,不要使用Tab键
  • 保持缩进一致,避免混合使用空格和Tab
  • 函数体、循环体、条件语句等都需要缩进

注释规范

  • 单行注释:使用#开头,注释内容与#之间空一格

    • 示例:# 这是一个单行注释
  • 多行注释:使用三引号"""'''包裹

    • 示例:
      python
      """
      这是一个多行注释
      用于解释函数的功能、参数和返回值
      """
  • 函数注释:使用文档字符串(docstring),说明函数的功能、参数、返回值

    • 示例:
      python
      def add(a, b):
          """
          计算两个数的和
          
          Args:
              a: 第一个数
              b: 第二个数
              
          Returns:
              两个数的和
          """
          return a + b
  • 注释原则

    • 注释应该简洁明了,避免冗余
    • 注释应该解释"为什么",而不是"是什么"
    • 关键代码、复杂逻辑必须添加注释
    • 代码修改时,相应的注释也应该更新

代码格式

  • 一行只写一条语句,避免一行多句
  • 每行代码长度控制在79个字符以内,超过需要换行
  • 使用空格分隔运算符和操作数,提高可读性
    • 示例:a = b + c 而不是 a=b+c
  • 函数和类之间空两行,函数内部不同逻辑块之间空一行

18.2 安全防护

输入验证

  • 验证用户输入:对所有用户输入的数据进行验证,确保数据符合预期格式

    • 示例:验证年龄是否为整数,邮箱是否符合格式
  • 防止注入攻击:使用参数化查询,避免直接拼接SQL语句

    • 示例:
      python
      # 不安全的做法
      query = f"SELECT * FROM users WHERE username = '{user_input}'"
      
      # 安全的做法
      query = "SELECT * FROM users WHERE username = %s"
      cursor.execute(query, (user_input,))
  • 防止XSS攻击:对用户输入的内容进行转义,避免恶意脚本

    • 示例:使用HTML转义函数处理用户输入

文件安全

  • 验证文件路径:避免用户输入直接作为文件路径,防止路径遍历攻击

    • 示例:
      python
      # 不安全的做法
      file_path = f"/data/{user_input}"
      
      # 安全的做法
      import os
      safe_path = os.path.join("/data", os.path.basename(user_input))
  • 限制文件操作权限:只授予必要的文件操作权限

  • 检查文件类型:验证文件类型,避免处理恶意文件

  • 使用上下文管理器:使用with语句处理文件,确保文件正确关闭

第三方模块安全

  • 从官方渠道安装:只从PyPI等官方渠道安装第三方模块
  • 验证模块版本:使用指定版本的模块,避免使用有安全漏洞的版本
  • 定期更新:定期更新第三方模块,修复安全漏洞
  • 检查依赖:使用工具检查依赖模块的安全漏洞
    • 示例:使用safety工具检查依赖安全

18.3 代码调试技巧

  • 在关键位置打印变量值,排查代码逻辑错误
  • 使用print()函数输出变量的类型和值
    • 示例:print(f"变量x的值:{x},类型:{type(x)}")
  • 打印函数的返回值,验证函数执行结果

PyCharm调试

  • 设置断点:在代码的关键位置设置断点
  • 单步执行:使用单步执行功能,逐行查看代码执行过程
  • 查看变量:在调试过程中查看变量的变化
  • 条件断点:设置条件断点,当满足特定条件时暂停执行

异常信息排查

  • 阅读异常信息:仔细阅读异常提示信息,了解错误类型和位置
  • 定位错误:根据异常栈信息,定位错误发生的位置
  • 分析原因:分析错误原因,确定解决方案
  • 测试修复:修复错误后,进行测试验证

调试示例

python
# 调试示例:计算平均值
def calculate_average(numbers):
    """计算列表的平均值"""
    try:
        # 打印输入参数
        print(f"输入列表:{numbers}")
        
        # 计算总和
        total = sum(numbers)
        print(f"总和:{total}")
        
        # 计算平均值
        average = total / len(numbers)
        print(f"平均值:{average}")
        
        return average
    except Exception as e:
        print(f"错误:{e}")
        import traceback
        traceback.print_exc()
        return None

# 测试
numbers = [1, 2, 3, 4, 5]
average = calculate_average(numbers)
print(f"最终结果:{average}")

# 测试错误情况
empty_list = []
average_empty = calculate_average(empty_list)
print(f"空列表结果:{average_empty}")

调试工具

  • pdb:Python内置的调试器
    • 用法:在代码中添加import pdb; pdb.set_trace()
  • ipdb:增强版的pdb,提供更好的交互体验
  • PyCharm调试器:图形化调试工具,功能强大
  • 日志模块:使用logging模块记录调试信息

通过遵守代码规范和安全防护措施,可以编写更加安全、可靠、可维护的Python代码。同时,掌握调试技巧可以帮助你更快地定位和解决问题,提高开发效率。

© 2026 编程马·菜鸟教程 版权所有