【Python】面试点总结(一)

news2024/11/16 16:54:12

1. Python 基础知识

  • Python 是什么?
    • Python 是一种高级编程语言,以其可读性和简约的语法著称。它支持多种编程范式,包括面向对象、命令式和函数式编程。
  • Python 的基本数据类型有哪些?
    • 数字:整型(int)、浮点型(float)、复数(complex)。
      示例:
a = 5        # int  
b = 5.0      # float  
c = 3 + 4j   # complex
    • 字符串str):文本数据,支持多种操作。
      示例:
s = "Hello"  
print(s[0])  # H
    • 列表list):有序可变的集合。
      示例:
nums = [1, 2, 3]  
nums.append(4)  # [1, 2, 3, 4]
    • 元组tuple):有序不可变的集合。
      示例:
point = (1, 2)
    • 字典dict):无序可变的键值对集合。
      示例:
student = {"name": "Alice", "age": 22}
    • 集合set):无序不重复的元素集合。
      示例:
unique_nums = {1, 2, 3, 1}  # {1, 2, 3}
  • 判断一个变量的类型的常用方法:
type(variable)                   # 返回变量的类型  
isinstance(variable, expected_type)  # 判断是否是某种类型

2. 控制结构

  • 流程控制语句:
    • 使用 ifelifelse 控制程序路径:
if condition:  
    # 执行代码  
    elif another_condition:  
# 执行其他代码  
        else:  
# 执行默认代码
  • 循环中的异常处理:
for item in items:  
    try:  
        process_item(item)  
    except SomeException as e:  
        handle_exception(e)

3. 函数和模块

  • 函数的定义与调用:
def greet(name):  
    return f"Hello, {name}!"  

print(greet("World"))  # Hello, World!
  • Python 的 lambda 函数:
    • 使用场景示例:
# 用于排序  
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]  
pairs.sort(key=lambda pair: pair[1])
  • 装饰器的基本示例:
def decorator_function(original_function):  
    def wrapper_function():  
        print("Wrapper executed before {}".format(original_function.__name__))  
        return original_function()  
    return wrapper_function  

@decorator_function  
def display():  
    return "Display function executed"

4. 数据结构和算法

  • 反转字符串的多种方法:
# 使用切片  
reversed_string = original_string[::-1]  

# 使用 reversed()  
reversed_string = ''.join(reversed(original_string))  

# 使用循环  
reversed_string = ''  
for char in original_string:  
    reversed_string = char + reversed_string
  • 列表的常见操作:
    • 添加元素、删除元素、查找元素:
my_list = [1, 2, 3]  
my_list.append(4)  # [1, 2, 3, 4]  
my_list.remove(2)  # [1, 3, 4]  
index = my_list.index(3)  # 1

5. 文件和异常处理

  • 文件操作的完整示例:
with open('example.txt', 'r') as file:  
    contents = file.read()  
    print(contents)  

with open('output.txt', 'w') as file:  
    file.write("Writing some text.")
  • 异常处理示例:
try:  
    # 可能出错的代码  
    result = 10 / 0  
except ZeroDivisionError:  
    print("Cannot divide by zero!")  
except Exception as e:  
    print(f"An error occurred: {e}")  
finally:  
    print("This will always execute.")

6. 面向对象编程

  • 类的定义和对象的创建:
class Animal:  
    def __init__(self, name):  
        self.name = name  

    def speak(self):  
        return f"{self.name} makes a sound."  

cat = Animal("Cat")  
print(cat.speak())  # Cat makes a sound.
  • 方法重写和多态示例:
class Dog(Animal):  
    def speak(self):  
        return f"{self.name} barks."  

dog = Dog("Dog")  
print(dog.speak())  # Dog barks.

7. 常用库

  • NumPy 基本操作:
import numpy as np  

arr = np.array([1, 2, 3])  
print(arr.mean())  # 2.0
  • Pandas 数据处理示例:
import pandas as pd  

data = {'Name': ['Alice', 'Bob'], 'Age': [24, 30]}  
df = pd.DataFrame(data)  
print(df)

8. 其他重点

  • 生成器的创建与使用:
def count_up_to(n):  
    count = 1  
    while count <= n:  
        yield count  
        count += 1  

for number in count_up_to(5):  
    print(number)  # 1 2 3 4 5
  • GIL 的影响:
    • Python 的 GIL(全局解释器锁)限制了多线程程序在多核处理器上的并行性,因此在 CPU 密集型任务中,可能更有效的选择是使用多进程(multiprocessing 模块)。
  • 单元测试的基本构造:
import unittest  

class TestMyFunction(unittest.TestCase):  
    def test_sum(self):  
        self.assertEqual(sum([1, 2, 3]), 6)  

if __name__ == '__main__':  
    unittest.main()

9. 进阶概念

1. 上下文管理器的使用示例:

上下文管理器是 Python 中的一种用于资源管理的结构,能够简化资源的分配和释放过程。上下文管理器确保在执行代码块之前正确地初始化资源,并在代码块执行后无论是否发生异常都能清理这些资源。这通常是通过 with 语句实现的。

主要特点

  1. 简化代码:通过使用上下文管理器,你不再需要手动进行资源清理,比如打开文件后忘记关闭,使用数据库连接后没有释放等。
  2. 自动处理异常:即使在代码块中发生异常,with 块会确保资源被正确释放,避免资源泄漏。
  3. 支持自定义:你可以创建自己的上下文管理器,以便在特定场景下管理资源。

上下文管理器的基本用法

1. 使用内置上下文管理器

一个常见的例子是打开文件:

 
with open('example.txt', 'r') as file:  
    contents = file.read()  
    print(contents)

在这个示例中,open 函数返回一个上下文管理器,with 语句确保文件在使用后自动关闭。即使在读取文件的过程中出现异常,文件也会被安全地关闭。

2. 自定义上下文管理器

你可以通过定义一个类并实现 __enter__ 和 __exit__ 方法来创建自己的上下文管理器:

class MyContext:  
    def __enter__(self):  
        print("Entering the context")  
        return self  

    def __exit__(self, exc_type, exc_val, exc_tb):  
        print("Exiting the context")  

with MyContext() as context:  
    print("In the context")

在这个例子中:

  • __enter__ 方法在 with 语句开始时被调用,可以进行资源的初始化(如打开连接)。
  • __exit__ 方法在 with 块执行结束时被调用,用于执行清理操作(如关闭连接)。它接受三个参数,分别表示异常类型、值和追踪信息,可以用来处理异常。

3. 使用 contextlib 模块

如果你的上下文管理器只需要进行简单的资源管理,可以使用 Python 的 contextlib 模块中的 contextmanager 装饰器来简化创建过程:

from contextlib import contextmanager  

@contextmanager  
def simple_context():  
    print("Entering the context")  
    try:  
        yield  # 在这里可以返回任何需要传递的值  
    finally:  
        print("Exiting the context")  

# 使用简单的上下文管理器  
with simple_context():  
    print("In the context")

在这个例子中,yield 用于分隔上下文管理器的进入和退出。try-finally 确保在退出时执行清理代码。

2. 异步编程的基本概念(asyncio):

异步编程是一种编程范式,允许程序在等待某些操作完成(如网络请求、文件读取等)时,不会阻塞整个程序的执行。这样可以提高程序的效率,特别是在涉及大量 I/O 操作时。Python 提供了内置的支持来实现异步编程,其中最重要的库是 asyncio

基本概念

  1. 同步与异步:
    • 同步编程:在执行代码时,代码会按顺序运行,一个操作完成后才能开始下一个操作。例如,读取文件的操作会阻塞,直到文件完全读取完毕。
    • 异步编程:操作可以在等待时执行其他任务,不需要阻塞。例如,如果你在等待网络响应,可以继续执行其他代码。
  1. 事件循环:
    • Python 的异步编程依赖于事件循环(event loop)。事件循环是一个不断运行的循环,用于调度和处理任务(如 I/O 事件和回调)。你可以把事件循环想象成一个调度员,它负责执行多个任务(coroutines),并自动管理它们的状态。
  1. 协程(Coroutines):
    • 协程是异步编程的核心,是一种可以挂起和恢复的函数。与普通函数不同,协程可以在执行过程中暂停(使用 await 关键字),等到某个操作完成后再继续执行。
    • 协程通过 async def 关键字定义,例如:
async def my_coroutine():  
    print("Start")  
    await asyncio.sleep(1)  # 模拟 I/O 操作  
    print("End")
  1. async await 关键字:
    • async 用于定义协程,标记一个函数是异步的。
    • await 用于挂起协程的执行,等待某个异步操作完成,例如在协程内部调用另一个协程。
  1. 任务(Tasks):
    • 在事件循环中,协程通过任务(Task)来运行。任务是协程的包装器,使它们能够在事件循环中调度和执行。可以使用 asyncio.create_task() 创建任务。

基本示例

下面是一个简单的例子,演示了如何使用 asyncio 模块进行异步编程:

import asyncio  

async def greet(name):  
    print(f"Hello, {name}!")  
    await asyncio.sleep(1)  # 模拟 I/O 操作  
    print(f"Goodbye, {name}!")  

async def main():  
    # 创建多个协程任务并调度执行  
    await asyncio.gather(  
        greet("Alice"),  
        greet("Bob"),  
        greet("Charlie"),  
    )  

# 执行主协程  
asyncio.run(main())

解释:

  • 定义协程:使用 async def 定义了 greet 协程。
  • 挂起执行:在 greet 中,await asyncio.sleep(1) 模拟了延迟,代表在进行 I/O 操作的时间。
  • 调度多个任务:在 main 协程中,asyncio.gather() 用于并行地调度多个 greet 调用。
  • 运行主程序:通过 asyncio.run(main()) 来运行主协程。

适用场景

  • I/O 密集型应用:例如网络请求、数据库操作、文件操作等,这些操作通常会等待外部资源完成,因此异步编程可以提高效率。
  • 高并发场景:在需要处理大量并发连接时,异步编程能有效利用系统资源。

注意事项

  • 不适合 CPU 密集型任务:由于 Python 的全局解释器锁(GIL),异步编程并不能提高 CPU 密集型操作的性能,此类任务更适合使用多线程或多进程。
import asyncio  

async def say_hello():  
    print("Hello!")  
    await asyncio.sleep(1)  
    print("World!")  

asyncio.run(say_hello())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贪心算法入门(三)

相关文章 贪心算法入门&#xff08;一&#xff09;-CSDN博客 贪心算法入门&#xff08;二&#xff09;-CSDN博客 1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&am…

企业知识中台:构建智慧企业的核心

在当今数字化时代&#xff0c;企业知识中台已成为构建智慧企业的核心。它不仅是企业知识资产的集中地&#xff0c;也是推动企业创新和提高决策效率的关键。本文将分为四个部分&#xff0c;详细探讨知识中台的概念、重要性、构建步骤以及如何利用HelpLook工具搭建企业知识库。 …

基于Spring Boot的在线性格测试系统设计与实现(源码+定制+开发)智能性格测试与用户个性分析平台、在线心理测评系统的开发、性格测试与个性数据管理系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

机器学习 ---线性回归

目录 摘要&#xff1a; 一、简单线性回归与多元线性回归 1、简单线性回归 2、多元线性回归 3、残差 二、线性回归的正规方程解 1、线性回归训练流程 2、线性回归的正规方程解 &#xff08;1&#xff09;适用场景 &#xff08;2&#xff09;正规方程解的公式 三、衡量…

shell脚本(1)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell脚本&#xff08;1&#xff09;脚本创建执行与变量使用_哔哩哔哩_bilibili 本文主要讲解shell脚本的创建、执行和变量的使用。 一、脚本执行…

测试实项中的偶必现难测bug--互斥逻辑异常

问题: 今天线上出了一个很奇怪的问题,看现象和接口是因为数据问题导致app模块奔溃 初步排查数据恢复后还是出现了数据重复的问题,查看后台实际只有一条数据,但是显示在app却出现了两条一模一样的置顶数据 排查: 1、顺着这个逻辑,我们准备在预发复现这个场景,先是cop…

解决MySQL中整型字段条件判断禁用不生效的问题

MySQL中&#xff0c;当尝试将整数与字符串进行比较时&#xff0c;数据库可能会尝试将字符串转换为整数。在这种情况下&#xff0c;空字符串会被转换为整数0&#xff0c;所以0 ! 会被解释为0 ! 0&#xff0c;结果自然是false。 在开发过程中&#xff0c;我们经常需要对数据库中的…

Flink1.19编译并Standalone模式本地运行

1.首先下载源码 2.本地运行 新建local_conf和local_lib文件夹&#xff0c;并且将编译后的文件放入对应的目录 2.1 启动前参数配置 2.1.2 StandaloneSessionClusterEntrypoint启动参数修改 2.1.3 TaskManagerRunner启动参数修改 和StandaloneSessionClusterEntrypoint一样修改…

创建vue插件,发布npm

开发步骤&#xff1a;1.创建一个vue项目&#xff0c;2.开发一个组件。 3.注册成插件。 4.vite和package.json配置。5.发布到npm &#xff11;.创建一个vue项目 npm create vuelatest 生成了vue项目之后&#xff0c;得到了以下结构。 在src下创建个plugins目录。用于存放开发的…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介&#xff1a;2. LSTM结构图&#xff1a;3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介&#xff1a; LSTM是一种循环神经网络&#xff0c;它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题&#xff1a;他们发现某个应用对一个数据量相对较小的表&#xff08;仅包含数千条记录&#xff09;访问时&#xff0c;频繁遇到性能下降的情况。为解决此问题&#xff0c;客户向我们求助进行分析。我们发现这张表有频繁的批量插…

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 1 问题引入2 求解P3P 1 问题引入 透视n点&#xff08;Perspective-n-Point&#xff0c;PnP&#xff09;问题是计算机视觉领域的经典问题&#xff0c;用于求解3D-2D的点运动。换句话说&#xff0c;当知道n个3D空间点坐标以及它们在图像上的投影点坐标时&#xff0c;可…

SpringBoot多环境+docker集成企业微信会话存档sdk

SpringBoot多环境docker集成企业微信会话存档sdk 文章来自于 https://developer.work.weixin.qq.com/community/article/detail?content_id16529801754907176021 SpringBoot多环境docker集成企业微信会话存档sdk 对于现在基本流行的springboot环境&#xff0c;官方文档真是比…

DAY64||dijkstra(堆优化版)精讲 ||Bellman_ford 算法精讲

dijkstra&#xff08;堆优化版&#xff09;精讲 题目如上题47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 邻接表 本题使用邻接表解决问题。 邻接表的优点&#xff1a; 对于稀疏图的存储&#xff0c;只需要存储边&#xff0c;空间利用率高遍历节点链接情况相对容…

在openi平台 基于华为顶级深度计算平台 openmind 动手实践

大家可能一直疑问&#xff0c;到底大模型在哪里有用。 本人从事的大模型有几个方向的业务。 基于生成式语言模型的海事航行警告结构化解析。 基于生成式语言模型的航空航行警告结构化解析。 基于生成式生物序列&#xff08;蛋白质、有机物、rna、dna、mrna&#xff09;的多模态…

Figma汉化:提升设计效率,降低沟通成本

在UI设计领域&#xff0c;Figma因其强大的功能而广受欢迎&#xff0c;但全英文界面对于国内设计师来说是一个不小的挑战。幸运的是&#xff0c;通过Figma汉化插件&#xff0c;我们可以克服语言障碍。以下是两种获取和安装Figma汉化插件的方法&#xff0c;旨在帮助国内的UI设计师…

深度学习-卷积神经网络CNN

案例-图像分类 网络结构: 卷积BN激活池化 数据集介绍 CIFAR-10数据集5万张训练图像、1万张测试图像、10个类别、每个类别有6k个图像&#xff0c;图像大小32323。下图列举了10个类&#xff0c;每一类随机展示了10张图片&#xff1a; 特征图计算 在卷积层和池化层结束后, 将特征…

关于adb shell登录开发板后terminal显示不完整

现象 今天有个同事跟我说&#xff0c;adb shell 登录开发板后&#xff0c;终端显示不完整&#xff0c;超出边界后就会出现奇怪的问题&#xff0c;比如字符覆盖显示等。如下图所示。 正常情况下应该如下图所示&#xff1a; 很明显&#xff0c;第一张图的显示区域只有完整区域…

【论文分享】三维景观格局如何影响城市居民的情绪

城市景观对居民情绪的影响是近些年来讨论的热门话题之一&#xff0c;现有的研究主要以遥感影像为数据来源&#xff0c;进行二维图像-数据分析&#xff0c;其量化结果精确度有限。本文引入了三维景观格局的研究模型&#xff0c;通过街景图片及网络发帖信息补充图像及数据来源&am…

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定&#xff0c;堪称科研神器。 功能介绍 我们以3.5版本为例&#xff0c;ChatGPT学术版总共分为五个区域&#xff1a;输入控制区、输出对话区、基础功能区、函数插件…