Python 进阶部分详细整理
1. 面向对象编程(OOP)
面向对象编程 (OOP) 是一种通过将程序中的数据和功能封装为对象的编程范式。OOP 基于四个核心概念:类与对象、继承、封装与多态。
类与对象
-
类(Class):类是创建对象的蓝图或模板。它定义了对象的属性和方法。在 Python 中,使用
class
关键字定义一个类。class Dog:def __init__(self, name, breed): # 构造函数self.name = name # 实例属性self.breed = breed
-
__init__()
是类的构造函数,用于初始化对象。在创建对象时,__init__()
自动被调用。
-
-
对象(Object):对象是类的实例,类定义了对象的属性和行为,每个对象是独立的。
my_dog = Dog("Buddy", "Golden Retriever") # 创建对象
类的属性与方法
-
实例属性:每个对象独立拥有的属性,通过
self
引用。 -
类属性:所有对象共享的属性,定义在类级别。
class Dog:species = 'Canine' # 类属性 def __init__(self, name, breed):self.name = name # 实例属性
-
实例方法:操作对象数据的方法,定义在类中,并使用
self
参数访问对象的属性和其他方法。 -
类方法(@classmethod):通过
@classmethod
修饰的类方法,使用cls
访问类属性,能作用于类本身而不是具体对象。@classmethod def set_species(cls, new_species):cls.species = new_species
-
静态方法(@staticmethod):不需要访问实例属性或类属性,使用
@staticmethod
修饰。@staticmethod def bark():print("Woof!")
继承
-
单继承:一个子类继承一个父类,子类继承父类的属性和方法。
class Animal:def __init__(self, name):self.name = name def speak(self):return "Animal sound" class Dog(Animal): # Dog 继承自 Animaldef speak(self):return "Woof!"
-
多继承:一个子类可以继承多个父类。Python 允许多继承,但需要小心处理父类方法的冲突。
-
super()
:用于在子类中调用父类的方法,特别是在构造函数中,可以避免手动调用父类。class Puppy(Dog):def __init__(self, name, breed):super().__init__(name, breed) # 调用父类构造函数
封装、继承与多态
-
封装:将数据(属性)和操作数据的代码(方法)打包在一起,并通过控制访问权限(如私有和公有属性)来保护数据。
-
继承:子类继承父类的属性和方法,从而实现代码复用。
-
多态:不同类的对象可以以相同的接口使用。例如,
Dog
和Cat
类都可以有speak()
方法,尽管它们的实现不同,Python 中可以调用相同的接口。
特殊方法
Python 中有一些双下划线开头和结尾的特殊方法(又称为魔术方法),这些方法可以为类实现特定的行为。
-
__str__()
:定义对象的可打印字符串表示。def __str__(self):return f"Dog({self.name}, {self.breed})"
-
__repr__()
:返回对象的官方字符串表示,通常用于调试。 -
__len__()
:使类可以使用len()
函数。 -
__eq__()
:使类支持==
运算符,用于对象比较。
2. 生成器与迭代器
迭代器
-
迭代器(Iterator):迭代器是实现了
__iter__()
和__next__()
方法的对象。__iter__()
返回迭代器对象本身,__next__()
返回容器的下一个元素,当没有元素时,抛出StopIteration
。class MyIterator:def __init__(self, limit):self.limit = limitself.count = 0 def __iter__(self):return self def __next__(self):if self.count < self.limit:self.count += 1return self.countelse:raise StopIteration
-
使用
iter()
和next()
:iter()
将对象转换为迭代器,next()
获取下一个值。it = iter(MyIterator(5)) print(next(it)) # 输出 1
生成器
-
生成器函数:生成器函数使用
yield
而不是return
返回值。生成器每次被调用时都会返回一个值,保持其状态(即函数内的局部变量在多次调用中不会被重置)。生成器是一种懒惰求值的方式,只有在需要的时候才生成值,适合处理大量数据。def countdown(n):while n > 0:yield nn -= 1
-
生成器表达式:生成器表达式是类似列表推导式的语法,但它不会一次性生成所有元素,而是逐步生成,节省内存。
gen_exp = (x * x for x in range(10)) # 生成器表达式
通过生成器,我们可以处理大数据集,而不会耗尽内存。例如,处理一大段日志文件时可以使用生成器按行读取。
3. 装饰器
函数装饰器
装饰器是一种设计模式,用来在不修改函数定义的情况下,动态地为函数增加功能。在 Python 中,可以使用 @
符号来应用装饰器。装饰器本质上是一个函数,它接收另一个函数作为参数,并返回一个新函数。
示例:
def my_decorator(func):def wrapper():print("Something before the function runs")func()print("Something after the function runs")return wrapper @my_decorator def say_hello():print("Hello!") say_hello()
输出:
Something before the function runs Hello! Something after the function runs
带参数的装饰器
带参数的装饰器比普通装饰器更加灵活。编写时需要使用三层函数:最外层接受装饰器的参数,第二层是普通装饰器,第三层是实际包装的函数。
示例:
def decorator_with_args(arg1, arg2):def decorator(func):def wrapper(*args, **kwargs):print(f"Decorator args: {arg1}, {arg2}")return func(*args, **kwargs)return wrapperreturn decorator @decorator_with_args("Hello", "World") def greet():print("Greetings!") greet()
输出:
Decorator args: Hello, World Greetings!
类装饰器
类装饰器是通过类实现的装饰器。使用 __call__()
方法,类可以像函数一样调用。类装饰器可以在装饰函数时保存更多的状态信息。
示例:
class MyDecorator:def __init__(self, func):self.func = func def __call__(self, *args, **kwargs):print("Before the function call")result = self.func(*args, **kwargs)print("After the function call")return result @MyDecorator def say_hello():print("Hello!") say_hello()
输出:
Before the function call Hello! After the function call
4. 异常处理
捕获异常
Python 使用 try
、except
语句来捕获异常,确保程序在出现错误时不会崩溃。else
块在 try
成功时执行,finally
块无论是否发生异常都会执行。
示例:
try:num = int(input("Enter a number: ")) except ValueError:print("That's not a valid number!") else:print(f"Number entered: {num}") finally:print("End of program.")
-
try
:包含可能产生异常的代码。 -
except
:捕获特定类型的异常。 -
else
:当没有异常时执行的代码。 -
finally
:无论是否发生异常,都会执行的代码,通常用于清理操作。
自定义异常
可以通过继承 Exception
类自定义异常,适用于需要在程序中捕获特定错误的情况。
示例:
class MyCustomError(Exception):def __init__(self, message):self.message = message try:raise MyCustomError("This is a custom error") except MyCustomError as e:print(f"Caught an error: {e.message}")
断言
断言是一种检查代码状态的简单方法。当条件为 False
时,assert
会抛出 AssertionError
。
示例:
x = 5 assert x > 0, "x should be greater than 0" assert x < 10, "x should be less than 10"
5. 模块与包
模块导入
模块是包含 Python 代码的文件,通常用于组织代码结构。可以通过 import
导入模块,也可以使用 from ... import
导入特定的变量或函数。
示例:
# 导入整个模块 import math print(math.sqrt(16)) # 导入特定函数 from math import sqrt print(sqrt(16))
-
import
:导入整个模块,并通过模块名访问其内容。 -
from ... import
:直接导入模块中的特定变量或函数。
包
包是一种组织模块的方式,通过包含一个 __init__.py
文件,Python 将其目录识别为一个包。包可以包含多个模块和子包。
__init__.py
的作用:
-
初始化包,当包第一次被导入时执行。
-
定义包的公开接口。
示例:
mypackage/__init__.pymodule1.pymodule2.py # 使用包 from mypackage import module1
常用内置模块
Python 提供了许多内置模块,涵盖了文件操作、系统功能、数学运算等常见需求。
-
os
:与操作系统交互的模块,提供了文件、目录操作。import os print(os.getcwd()) # 获取当前工作目录
-
sys
:与 Python 解释器交互的模块,提供命令行参数、系统路径等功能。import sys print(sys.version) # 打印Python版本
-
datetime
:处理日期和时间的模块。from datetime import datetime print(datetime.now()) # 获取当前日期和时间
-
random
:生成随机数和随机选择的模块。import random print(random.randint(1, 10)) # 生成1到10之间的随机整数
-
math
:提供基本数学函数和常量。import math print(math.pi) # 输出圆周率
-
itertools
:提供用于迭代的高效工具,例如排列、组合等。import itertools print(list(itertools.permutations([1, 2, 3]))) # 生成排列
6. 正则表达式
正则表达式(Regular Expressions, regex)是一种强大的字符串匹配工具,允许通过定义模式(Pattern)来进行复杂的字符串搜索、替换、分割等操作。Python 提供了 re
模块来支持正则表达式。
正则基础
-
模式和规则
:正则表达式是一种用来描述字符串匹配规则的特殊符号组合。常见符号包括:
-
.
:匹配任意一个字符(除了换行符)。 -
^
:匹配字符串的开头。 -
$
:匹配字符串的结尾。 -
*
:匹配前一个字符 0 次或多次。 -
+
:匹配前一个字符 1 次或多次。 -
?
:匹配前一个字符 0 次或 1 次。 -
[]
:匹配括号内的任意一个字符,如[a-z]
表示小写字母。 -
|
:表示“或”关系。 -
\d
:匹配数字。 -
\w
:匹配字母、数字和下划线。
-
常用方法
-
search()
:在字符串中搜索符合正则表达式的内容,返回第一个匹配对象。import re result = re.search(r'\d+', 'There are 123 apples') print(result.group()) # 输出 '123'
-
match()
:从字符串开头开始匹配,如果匹配成功返回匹配对象,否则返回None
。result = re.match(r'\d+', '123 apples') print(result.group()) # 输出 '123'
-
findall()
:返回字符串中所有与正则表达式匹配的部分,以列表形式返回。result = re.findall(r'\d+', '123 apples, 456 oranges') print(result) # 输出 ['123', '456']
-
sub()
:替换字符串中与正则表达式匹配的部分。result = re.sub(r'apples', 'bananas', 'I like apples') print(result) # 输出 'I like bananas'
-
split()
:根据正则表达式匹配的部分拆分字符串。result = re.split(r'\s+', 'split by spaces') print(result) # 输出 ['split', 'by', 'spaces']
7. 数据结构与算法
常用数据结构
-
栈(Stack):后进先出(LIFO)的数据结构,常用于递归问题。
stack = [] stack.append(1) # 压栈 stack.pop() # 出栈
-
队列(Queue):先进先出(FIFO)的数据结构,常用于广度优先搜索。
from collections import deque queue = deque() queue.append(1) # 入队 queue.popleft() # 出队
-
链表(Linked List):由节点构成的线性数据结构,每个节点包含一个数据和一个指向下一个节点的指针。
-
树(Tree):一种非线性数据结构,常用于表示分层数据。二叉树是其中最常见的一种。
-
字典(Dictionary):键值对(key-value)映射的数据结构。
dict = {'a': 1, 'b': 2}
-
集合(Set):无序且不重复的元素集合。
set = {1, 2, 3}
常见算法
-
排序算法:
-
冒泡排序:两两比较并交换,时间复杂度为 O(n²)。
-
快速排序:选取一个基准值,将小于基准的放一边,大于基准的放另一边,递归进行,时间复杂度平均为 O(n log n)。
-
归并排序:分治法,将数组递归拆分再合并,时间复杂度为 O(n log n)。
-
-
搜索算法:
-
二分查找:在有序数组中查找元素,时间复杂度为 O(log n)。
-
深度优先搜索(DFS):使用栈实现的图遍历算法。
-
广度优先搜索(BFS):使用队列实现的图遍历算法。
-
时间复杂度
时间复杂度衡量算法执行时间随输入规模的增长而变化的速度。常见的时间复杂度有:
-
O(1):常数时间
-
O(log n):对数时间
-
O(n):线性时间
-
O(n log n):线性对数时间
-
O(n²):平方时间
8. 并发与多线程
线程
-
创建线程:Python 使用
threading
模块来创建和管理线程。import threading def print_hello():print("Hello from thread") thread = threading.Thread(target=print_hello) thread.start() thread.join() # 等待线程结束
-
线程同步:使用
Lock
机制来避免多个线程同时修改共享数据,导致竞争条件问题。lock = threading.Lock() lock.acquire() # 获取锁 # 执行共享资源操作 lock.release() # 释放锁
-
Semaphore
:控制访问共享资源的线程数量。
进程
-
多进程
:使用
multiprocessing
模块来创建多个进程,提供更强大的并发能力。
from multiprocessing import Process def print_hello():print("Hello from process") process = Process(target=print_hello) process.start() process.join()
协程
协程是一种轻量级的并发方式,Python 的 asyncio
模块允许编写异步协程程序,async
和 await
是协程的关键字。
示例:
import asyncio async def say_hello():print("Hello")await asyncio.sleep(1)print("World") asyncio.run(say_hello())
9. 网络编程
Socket编程
使用 socket
模块实现 TCP/UDP 通信。
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('www.example.com', 80)) sock.send(b"GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n")
HTTP 请求
requests
模块是一个流行的 Python 库,用于发送 HTTP 请求。
示例:
import requests response = requests.get('https://api.example.com/data') print(response.json())
Flask Web 框架
Flask 是一个轻量级 Web 框架,适合快速搭建 Web 应用。
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world():return 'Hello, World!' if __name__ == '__main__':app.run()
10. 数据科学与机器学习库
Numpy
Numpy 是用于多维数组处理的库,支持大量的数学运算。
示例:
import numpy as np array = np.array([1, 2, 3]) print(np.mean(array)) # 输出 2.0
Pandas
Pandas 是用于数据处理和分析的库,主要使用 DataFrame
数据结构。
示例:
import pandas as pd data = {'name': ['John', 'Jane'], 'age': [30, 25]} df = pd.DataFrame(data) print(df)
Matplotlib
Matplotlib 是用于数据可视化的库,可以创建各种图表。
示例:
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.show()
Scikit-learn
Scikit-learn 提供了常用的机器学习模型和工具,如线性回归、分类、聚类等。
示例:
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit([[1], [2], [3]], [1, 2, 3]) print(model.predict([[4]])) # 输出 [4.]
11. 高级 Python 特性
上下文管理
with
语句可以确保资源的正确管理,通常用于文件操作等场景。__enter__()
和 __exit__()
方法实现上下文管理协议。
示例:
with open('file.txt', 'r') as file:content = file.read()
元类
元类是用来创建类的类,type()
是最常见的元类。可以通过元类定制类的行为。
示例:
class MyMeta(type):def __new__(cls, name, bases, dct):print(f"Creating class {name}")return super().__new__(cls, name, bases, dct) class MyClass(metaclass=MyMeta):pass
单例模式
单例模式确保类只有一个实例,可以通过重写 __new__()
方法来实现。
示例:
class Singleton:_instance = None def __new__(cls):if cls._instance is None:cls._instance = super().__new__(cls)return cls._instance
相关文章:
Python 进阶部分详细整理
1. 面向对象编程(OOP) 面向对象编程 (OOP) 是一种通过将程序中的数据和功能封装为对象的编程范式。OOP 基于四个核心概念:类与对象、继承、封装与多态。 类与对象 类(Class):类是创建对象的蓝图或模板。它…...

[ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题
问题描述 由前一篇文章https://blog.csdn.net/jay547063443/article/details/142059700?fromshareblogdetail&sharetypeblogdetail&sharerId142059700&sharereferPC&sharesourcejay547063443&sharefromfrom_link,移植HDMI-IN部分驱动后出现&a…...

【黑马点评】 使用RabbitMQ实现消息队列——2.使用RabbitMQ监听秒杀下单
2 使用RabbitMQ实现消息队列 2.1 修改\hm-dianping\pom.xmlpom.xml文件 添加RabbitMQ的环境 <!-- RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </depe…...

业务封装与映射 -- OTUk/ODUk/OPUk开销帧结构
开销是为了保证净荷正常、灵活传送所必须附加的供网络运行、管理和维护(OAM)使用的字节。 OTN电层开销包括OTUk开销、ODUk开销、OPUk开销、OTUCn开销、ODUCn开销、OPUCn开销和帧对齐开销。 SM开销属于OTU开销,占用3个字节;PM开销…...
Vim基本用法
Vim用法 一、基本模式 1. 普通模式(Normal Mode) 移动光标 基本移动:使用方向键(h左移、j下移、k上移、l右移),也可以使用 H(移到屏幕顶部)、M(移到屏幕中间ÿ…...
python 实现Tarjan 用于在有向图中查找强连通分量的算法
Tarjan 用于在有向图中查找强连通分量的算法介绍 Tarjan算法是一种用于在有向图中查找强连通分量的高效算法,由Robert Tarjan在1972年提出。强连通分量是指在有向图中,如果从顶点u到顶点v以及从顶点v到顶点u都存在一条路径,那么顶点u和顶点v…...
Qt开发技巧(十五)字符串去除空格,跨网段搜索不生效,设置图片显示失败问题,表格视图的批量删除,主动判断字串编码,开启向前查询的属性,画家类载入html来绘制
继续讲一些Qt开发中的技巧操作: 1.字符串去除空格 我们经常会遇到字符串重去除空格的情况,对于QString去除空格,有多种场景,可能需要去除左侧、右侧、所有等位置的空格; //字符串去空格 -1移除左侧空格 0移除所有空格…...

【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 🔍1. 引言:探索机器学习在食品生产中的革新之路📒2. 机器学习在食品质量控制中的应用🌞实…...
Ubuntu 安装CUDA并使用Docker配置Pytorch环境
文章目录 参考安装顺序Nvidia GPU driverDockerNvidia Container ToolkitDocker PyTorch 1. Nvidia GPU Driver2. Docker 安装(使用apt存储库进行安装)3. Nvidia Container Toolkit3.1 Docker测试GPU 参考 安装顺序 Nvidia GPU driver Docker Nvidia…...
【论文阅读】Simulating 500 million years of evolution with a language model
Simulating 500 million years of evolution with a language model 1、概述 展示了语言模型在蛋白质设计和进化模拟方面的能力。通过对 ESM3 模型的研究,发现其能够生成与自然蛋白质差异较大且具有功能的新蛋白质,如新型绿色荧光蛋白(GFP),表明语言模型可以达到自然进化…...
detectron2/layers源码笔记
from .wrappers import ( BatchNorm2d, Conv2d, #在torch.conv2d的基础上集成了norm层和activation层 ConvTranspose2d, cat, interpolate, Linear, nonzero_tuple, #nonzero_tuple(x)得到tuple of 每个维度的索引 cross_entropy, empty_input_loss_func…...

LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱
iText2KG是一个基于大型语言模型的增量知识图谱构建工具,通过从文本文档中提取实体和关系来逐步构建知识图谱。该工具具有零样本学习能力,能够在无需特定训练的情况下,在多个领域中进行知识提取。它包括文档提炼、实体提取和关系提取模块&…...
React基础-快速梳理
React介绍 React由Meta公司开发,是一个用于构建Web和原生交互界面的库 React的优势 相较于传统基于DOM开发的优势 组件化的开发方式不错的性能 相较于其它前端框架的优势 丰富的生态跨平台支持 开发环境创建 create-react-app是一个快速创建React开发环境的…...
H.264编解码 - NALU详解
一、概述 NALU(Network Abstraction Layer Unit)是H.264编解码中的一个重要概念。H.264是一种视频压缩标准,将视频数据分割成一系列的NALU。每个NALU都是一个独立的数据单元,包含视频压缩后的一个片段。每个NALU都有自己的起始码和长度前缀,用于标识NALU的起始位置和长度。…...

vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI
目录 vSAN容错条带化存储策略1. 创建新策略2. 应用存储策略 vSAN文件服务文件服务快照与备份 vSAN iSCSI目标服务 vSAN容错 FTT:Fault to Tolerance 允许故障数 故障域:每一台vSAN主机是一个故障域 - 假设3台超融合(3计算1存储)&…...
图解C#高级教程(四):协变、逆变
本章的主题是可变性(variance),这里的可变性更多的是指基类和派生类之间的转换。可变性分为三种:协变(covariance)、逆变(contravariance)和不变(invariance)…...

详解CSS中的伪元素
4.3 伪元素 可以把样式应用到文档树中根本不存在的元素上。 ::first-line 文本中的第一行 ::first-letter 文本中的第一个字母 ::after 元素之后添加 ::before 元素之前 代码: <!DOCTYPE html> <html> <head><meta charset"utf-8&q…...
paper_template
paper_template Title 文章标题 Abstract 摘要 Keywords 关键词 Highlights Highlights / 创新点 Summary 写完笔记之后最后填,概述文章的内容,以后查阅笔记的时候先看这一段。 Backgrounds 描述当前研究背景 Research Objective 作者的研…...

【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误
解决 Ubuntu 中 “Unable to Find Python3 Executable” 错误 在 Ubuntu 系统上使用 Python 进行开发时,遇到找不到 python3 可执行文件的错误。 主要问题是无法正常打开终端(原生与terminator),找不到python3,且无法…...
CUDA与TensorRT学习六:模型部署-CNN、模型部署-YOLOv8检测器、部署BEVFusion模型
文章目录 一、模型部署-CNN二、模型部署-YOLOv8检测器三、部署BEVFusion模型 一、模型部署-CNN 二、模型部署-YOLOv8检测器 三、部署BEVFusion模型...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...