干货 |17个常见的Python运行时错误

Python 运行时错误通常会在代码执行过程中因为各种问题(如语法错误、类型错误、索引错误等)而抛出。这里我将列出 17 个常见的 Python 运行时错误,并给出每个错误的简单示例代码:

  1. NameError - 尝试访问一个未定义的变量。

    print(x)  # x 未定义
    
  2. TypeError - 尝试将函数应用于不适当类型的对象。

    print(1 + 'a')  # 尝试将整数和字符串相加
    
  3. ZeroDivisionError - 尝试除以零。

    result = 1 / 0
    
  4. IndexError - 尝试访问列表、元组或字符串中不存在的索引。

    my_list = [1, 2, 3]
    print(my_list[3])  # 索引 3 不存在
    
  5. KeyError - 尝试访问字典中不存在的键。

    my_dict = {'a': 1}
    print(my_dict['b'])  # 键 'b' 不存在
    
  6. AttributeError - 尝试访问对象的属性或方法,但该对象没有该属性或方法。

    class MyClass:
        pass
    obj = MyClass()
    print(obj.my_attribute)  # MyClass 没有 my_attribute 属性
    
  7. SyntaxError - 语法错误,通常不是运行时错误,但容易混淆。

    if x = 5:  # 应为 ==
        print("x is 5")
    
  8. ValueError - 传入函数的参数类型正确但值不合适(如超出范围)。

    num = int(input("Enter a number: "))
    print(num ** num) if num < 0 else print("Number must be non-negative")
    
  9. IndentationError - 缩进错误,也是语法错误的一种,但常与运行时错误混淆。

    def my_function():
    print("Hello")  # 缺少缩进
    
  10. UnboundLocalError - 尝试访问一个局部变量,但在使用它之前已将其标记为局部变量(即尝试在变量赋值前使用它)。

    x = 1
    def my_func():
        print(x)
        x = 2
    my_func()
    
  11. RecursionError - 递归调用深度过大导致栈溢出。

    def recursion():
        recursion()
    recursion()
    
  12. ImportError - 尝试导入不存在的模块或包。

    import non_existent_module
    
  13. FileNotFoundError - 尝试打开不存在的文件。

    with open('non_existent_file.txt', 'r') as f:
        print(f.read())
    
  14. PermissionError - 尝试执行没有权限的操作(如写入受保护的文件)。

    with open('/etc/passwd', 'w') as f:  # 假设没有足够的权限
        f.write("test")
    
  15. KeyError(再次提及,因为很常见)- 字典键不存在。

    my_dict = {'a': 1}
    print(my_dict.get('b'))  # 使用 get() 可以避免 KeyError,但这里为了示例仍使用索引方式
    
  16. NotImplementedError - 当一个类实现了某个接口,但方法未具体实现时抛出。

    class MyInterface:
        def my_method(self):
            raise NotImplementedError
    
    obj = MyInterface()
    obj.my_method()
    
  17. MemoryError - 程序试图使用超过可用内存的资源时抛出。

    # 这通常不会直接通过简单代码触发,但可以通过大型数据处理或递归深度过深间接导致
    

请注意,SyntaxErrorIndentationError 实际上是在代码解析时(而非运行时)发生的,但它们经常与运行时错误混淆,因此我也在这里列出了它们。

你可能感兴趣的:(python,开发语言,爬虫,数据库)