Python面试必备:11道基础面试题解析

0 下载量 58 浏览量 更新于2024-09-01 收藏 168KB PDF 举报
丰富的格式控制。而%操作符则相对简单,它主要用于替换字符串中的占位符,通常用于基本类型的数据格式化。两者的区别如下: 1). %操作符的使用: 使用%操作符时,字符串中需要被替换的部分由%符号和格式代码组成,如`"%d %s" % (10, "hello")`,其中%d代表整数,%s代表字符串。然后通过%操作符后的元组或字典来提供替换的值。 2). .format方法的使用: `.format`方法提供了更灵活的语法,例如`"{0} {1}".format(10, "hello")`,在这里,数字0和1是位置参数,对应于提供的参数的顺序。此外,还可以使用关键字参数,如`"{name} {age}".format(name="Alice", age=25)`。 3). .format的优势: - 可读性更强:可以使用字段名来代替位置索引,使得代码更易理解。 - 支持更多格式选项:可以控制数值的精度,对齐方式,填充字符等。 - 参数数量不限:可以接受任意数量的参数。 - 参数顺序不敏感:可以通过关键字指定参数,无需按顺序提供。 五、Python的异常处理 Python使用try/except语句来处理异常。当try块中的代码出现错误时,会触发对应的异常,然后执行except块中的代码。例如: ```python try: # 可能会抛出异常的代码 x = 1 / 0 except ZeroDivisionError: print("不能除以零!") ``` 在上述代码中,如果尝试除以零,会触发`ZeroDivisionError`,程序不会立即崩溃,而是执行except块中的代码,打印出一条错误消息。 六、Python的装饰器 装饰器是一种特殊类型的函数,可以修改其他函数的功能或行为,而不需要改变原函数的源代码。例如,一个简单的日志装饰器可能如下所示: ```python def log(func): def wrapper(*args, **kwargs): print(f"调用了函数:{func.__name__}") return func(*args, **kwargs) return wrapper @log def add(x, y): return x + y ``` 在这个例子中,`add`函数在调用时会被`log`装饰器包装,从而在每次调用时自动打印一条日志。 七、Python的面向对象编程 Python支持面向对象编程(OOP),包括类的定义、继承、封装和多态。类是创建对象的模板,对象是类的实例。例如: ```python class Dog: def __init__(self, name): self.name = name def bark(self): print(f"{self.name}汪汪叫") my_dog = Dog("旺财") my_dog.bark() # 输出:"旺财汪汪叫" ``` 八、Python的迭代器和生成器 迭代器是实现了`__iter__`和`__next__`方法的对象,可以迭代访问容器中的元素。生成器是特殊的迭代器,使用`yield`语句来暂停函数的执行并返回值。例如: ```python def count_up_to(n): for i in range(n): yield i for num in count_up_to(5): print(num) # 输出:0 1 2 3 4 ``` 九、Python的上下文管理器 上下文管理器用于处理资源的获取和释放,如文件操作。通过with语句使用上下文管理器,确保资源在使用后会被正确关闭。例如: ```python with open("file.txt", "r") as f: content = f.read() print(content) ``` 十、Python的列表推导式和字典推导式 列表推导式允许快速创建新列表,而字典推导式用于创建新字典。例如: ```python # 列表推导式 squares = [x**2 for x in range(10)] # 字典推导式 even_squares = {x: x**2 for x in range(10) if x % 2 == 0} ``` 十一、Python的模块导入和包管理 Python使用`import`语句导入模块,可以使用`from...import`选择性地导入模块中的特定部分。Python的包结构允许组织大型项目,使用`.`来访问包内的子模块。 以上就是关于Python的11道基本面试题的详细解答,涵盖了语言基础、面向对象、异常处理、数据结构和进阶特性等多个方面,希望对学习和理解Python有所帮助。