Python基础面试20题

  • Post category:Python

下面是Python基础面试20题的完整攻略:

问题一:Python中可变与不可变数据类型有哪些?

Python中可变的数据类型包括列表(list)、字典(dict)、集合(set)等,这些数据类型可以在内存中直接修改数据。

Python中不可变的数据类型包括数字(int、float等)、字符串(str)、元组(tuple)等,这些数据类型在内存中不能被直接修改,修改后会产生新的对象。

问题二:Python中如何实现多线程?

Python中实现多线程有两种方式:通过threading模块创建线程和通过继承Thread类创建线程。

通过threading模块创建线程的步骤如下:

  1. 导入threading模块;
  2. 创建Thread子类,重写run()方法;
  3. 创建Thread子类的实例对象;
  4. 调用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类创建线程的步骤如下:

  1. 导入threading模块;
  2. 直接实例化Thread类,传递target参数为目标函数,在目标函数中实现线程逻辑;
  3. 调用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中内置了许多标准库,常用的有以下几个:

  1. os库:提供了一些与操作系统交互的函数,包括读取环境变量、获取当前工作路径、创建和删除目录等功能;
  2. sys库:提供了一些与Python解释器交互的函数,包括获取命令行参数、模块导入路径等;
  3. datetime库:提供了日期和时间的处理函数;
  4. random库:提供了生成随机数的函数;
  5. re库:提供了正则表达式函数;
  6. json库:提供了将Python数据类型与JSON数据格式相互转换的函数;
  7. 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语句可以保证文件在使用完后自动关闭,为了防止文件读写中出现异常而造成文件打开但未关闭的情况。