下面是Python基础面试20题的完整攻略:
问题一:Python中可变与不可变数据类型有哪些?
Python中可变的数据类型包括列表(list)、字典(dict)、集合(set)等,这些数据类型可以在内存中直接修改数据。
Python中不可变的数据类型包括数字(int、float等)、字符串(str)、元组(tuple)等,这些数据类型在内存中不能被直接修改,修改后会产生新的对象。
问题二:Python中如何实现多线程?
Python中实现多线程有两种方式:通过threading模块创建线程和通过继承Thread类创建线程。
通过threading模块创建线程的步骤如下:
- 导入threading模块;
- 创建Thread子类,重写run()方法;
- 创建Thread子类的实例对象;
- 调用start()方法启动线程。
示例代码如下:
import threading
class MyThread(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self.num = num
def run(self):
print("This is thread", self.num)
threads = []
for i in range(5):
threads.append(MyThread(i))
threads[i].start()
通过继承Thread类创建线程的步骤如下:
- 导入threading模块;
- 直接实例化Thread类,传递target参数为目标函数,在目标函数中实现线程逻辑;
- 调用start()方法启动线程。
示例代码如下:
import threading
def thread_func(num):
print("This is thread", num)
threads = []
for i in range(5):
threads.append(threading.Thread(target=thread_func, args=(i,)))
threads[i].start()
问题三:Python中有哪些标准库?
Python中内置了许多标准库,常用的有以下几个:
- os库:提供了一些与操作系统交互的函数,包括读取环境变量、获取当前工作路径、创建和删除目录等功能;
- sys库:提供了一些与Python解释器交互的函数,包括获取命令行参数、模块导入路径等;
- datetime库:提供了日期和时间的处理函数;
- random库:提供了生成随机数的函数;
- re库:提供了正则表达式函数;
- json库:提供了将Python数据类型与JSON数据格式相互转换的函数;
- urllib库:提供了访问Web页面相关的函数。
问题四:Python中如何进行异常处理?
Python中的异常处理可以通过try-except语句实现。try语句中包含可能会引发异常的代码,如果try语句块中的代码引发了异常,则跳转到except语句块进行异常处理。代码示例如下:
try:
# 可能会引发异常的代码
except 异常类型 as 异常对象:
# 异常处理代码
finally:
# 最终执行的代码,无论try语句块中是否出现异常
在except语句块中可以使用多个异常类型,用逗号隔开,如:
try:
# 可能会引发异常的代码
except (异常类型1, 异常类型2) as 异常对象:
# 异常处理代码
也可以使用except语句块来捕获所有异常:
try:
# 可能会引发异常的代码
except:
# 异常处理代码
问题五:Python中如何读写文件?
Python中可以使用内置函数open()来打开一个文件,其包含两个参数:文件名和打开模式。打开模式有以下几种:
- ‘r’:只读模式,默认模式;
- ‘w’:只写模式,如果文件已存在,则清除文件内容后重新写入;
- ‘x’:只写模式,如果文件不存在,则创建文件,否则引发异常;
- ‘a’:追加模式,如果文件已存在,在原文件末尾追加数据,否则创建新文件;
- ‘b’:二进制模式;
- ‘t’:文本模式,默认模式。
读取文件可以使用read()方法,写入文件可以使用write()方法。示例代码如下:
# 写文件
with open("test.txt", "w") as f:
f.write("Hello, world!")
# 读文件
with open("test.txt", "r") as f:
data = f.read()
print(data)
其中,with语句可以保证文件在使用完后自动关闭,为了防止文件读写中出现异常而造成文件打开但未关闭的情况。