# python_ai_yangboxiong **Repository Path**: leil1230/python_ai_yangboxiong ## Basic Information - **Project Name**: python_ai_yangboxiong - **Description**: Python人工智能原理、实践及应用随书例题 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-12 - **Last Updated**: 2024-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Python中的异常类型非常丰富,它们构成了一个异常层次结构 1. **BaseException**:所有异常的基类,不应该被直接实例化或捕获。 2. **SystemExit**:请求退出解释器的异常。 3. **KeyboardInterrupt**:程序被用户中断(通常是通过按Ctrl+C)。 4. **GeneratorExit**:当生成器(generator)关闭时引发。 5. **Exception**:常规异常的基类,大多数异常都是从这个类派生的。 - **ArithmeticError**:数学运算异常的基类。 - **FloatingPointError**:浮点运算错误。 - **OverflowError**:数值运算超出最大限制。 - **ZeroDivisionError**:除以零。 - **AssertionError**:断言失败。 - **AttributeError**:尝试访问对象不存在的属性。 - **EOFError**:到达文件末尾。 - **ImportError**:导入模块失败。 - **IndexError**:索引超出序列的范围。 - **KeyError**:字典中没有指定的键。 - **KeyboardInterrupt**:程序被用户中断。 - **MemoryError**:内存溢出错误。 - **NameError**:使用了未定义的变量名。 - **OSError**:操作系统相关的异常。 - **IOError**:输入/输出操作失败。 - **EnvironmentError**:旧版IOError,已被OSError取代。 - **RuntimeError**:运行时错误。 - **SyntaxError**:语法错误。 - **IndentationError**:缩进错误。 - **TabError**:混合使用空格和制表符。 - **TypeError**:操作或函数应用于不适当类型的对象。 - **ValueError**:传入无效的参数。 - **StopIteration**:迭代器没有更多的元素。 - **NotImplementedError**:尚未实现的方法。 - **RecursionError**:递归太深导致最大递归深度超过限制。 - **UnicodeError**:Unicode相关错误。 - **Warning**:警告基类,不是异常。 ## Python函数的参数传递主要有以下几种方式 1. **位置参数(Positional Arguments)**: 这是最基本的参数传递方式,调用函数时按照函数定义的参数顺序传入参数值。 ```python def func(a, b, c): print(a, b, c) func(1, 2, 3) # 输出: 1 2 3 ``` 2. **关键字参数(Keyword Arguments)**: 在调用函数时,可以指定参数名,这样参数的顺序就不重要了。 ```python def func(a, b, c): print(a, b, c) func(c=3, b=2, a=1) # 输出: 1 2 3 ``` 3. **可变参数(Arbitrary Argument Lists)**: 使用星号(*)定义可变数量的位置参数。 ```python def func(*args): for arg in args: print(arg) func(1, 2, 3) # 输出: 1 2 3 ``` 4. **关键字参数字典(Keyword Argument Dictionary)**: 使用两个星号(**)定义可变数量的关键字参数。 ```python def func(**kwargs): # 传入的参数是一个字典 for key, value in kwargs.items(): print(key, value) func(a=1, b=2, c=3) # 输出: a 1 b 2 c 3 ``` 5. **参数组合(Combining Arguments)**: 可以将位置参数、关键字参数、可变参数和关键字参数字典组合使用。 ```python def func(a, b, *args, **kwargs): print(a, b, args) for key, value in kwargs.items(): print(key, value) func(1, 2, 3, 4, a=5, b=6) # 输出: 1 2 (3, 4) a 5 b 6 ``` 6. **默认参数(Default Argument Values)**: 在函数定义时,可以给参数指定默认值,如果调用时没有提供该参数的值,则使用默认值。 ```python def func(a, b=2): print(a, b) func(1) # 输出: 1 2 func(1, 3) # 输出: 1 3 ``` 7. **参数解包(Argument Unpacking)**: 可以在函数调用时使用星号(*)或两个星号(**)来解包可迭代对象或字典。 ```python def func(a, b, c): print(a, b, c) args = (1, 2, 3) func(*args) # 输出: 1 2 3 kwargs = {'b': 2, 'c': 3} func(1, **kwargs) # 输出: 1 2 3 ```