Python简介

Python简介

1. Python定义

Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。

  • Python 是解释型语言: 开发过程中没有了编译这个环节。类似于PHP和Perl语言。

  • Python 是交互式语言: 可以在一个 Python 提示符 >>> 后直接执行代码。

  • Python 是面向对象语言: Python支持面向对象的风格或代码封装在对象的编程技术。

2. Python发展史

2.1 Python发展史

  1. 1980年代末

    • Guido van Rossum在荷兰阿姆斯特丹的CWI(Centrum Wiskunde & Informatica)工作,开始设计Python语言,灵感来自于ABC语言和其他语言如C、Unix shell。
  2. 1991年

    • Python第一个版本(0.9.0)发布,包含了很多现代Python的基本特性,如异常处理、函数、模块、以及一些内置数据类型。
  3. 1994年

    • Python 1.0发布,增加了lambda、map、filter、reduce等功能。
  4. 2000年

    • Python 2.0发布,引入了列表解析、垃圾回收机制、以及Unicode支持。
  5. 2008年

    • Python 3.0发布,这是一个不向后兼容的版本,引入了许多改进,如print函数、整数除法、文本和数据的更明确区分等。

2.2 主要版本

  1. Python 1.x 系列

    • Python 1.0(1994年):引入了模块、异常、函数、以及核心数据类型如列表和字典。
    • Python 1.5(1998年):引入了许多新特性,包括嵌套作用域和标准库的扩展。
  2. Python 2.x 系列

    • Python 2.0(2000年):引入了垃圾回收机制、列表解析、Unicode支持等。
    • Python 2.7(2010年):作为2.x系列的最后一个主要版本,增加了一些3.x的特性,如新格式化字符串语法( str.format)和字典理解(dictionary comprehensions)。
  3. Python 3.x 系列

    • Python 3.0(2008年):这是一个不向后兼容的版本,引入了许多改进和新特性,如print函数、整数除法、更明确的文本和数据区分、以及重新设计的标准库。
    • Python 3.6(2016年):引入了格式化字符串字面值(f-strings)、异步生成器和异步推导式。
    • Python 3.7(2018年):引入了数据类(dataclasses)、上下文变量、改进的模块导入机制等。
    • Python 3.8(2019年):引入了赋值表达式(walrus operator :=)、位置仅参数等。
    • Python 3.9(2020年):引入了字典合并运算符( ||=)、类型提示的改进等。
    • Python 3.10(2021年):引入了结构模式匹配(Structural Pattern Matching)、改进的错误消息等。
    • Python 3.11(2022年):引入了新的性能优化、改进的错误处理等。

2.3 Python2.0与Python3.0的区别

类别Python 2.0Python 3.0
输出方面使用print关键字进行输出,例如:print "Hello"使用print()函数,例如:print("Hello")
输入方面使用raw_input()函数,例如:name = raw_input("请输入你的名字:")使用input()函数,例如:name = input("请输入你的名字:")
字符串的编码格式默认采用ASCII编码对输入的字符串进行编码默认采用Unicode编码对字符串进行编码
格式化字符串的方式%占位符进行标准化格式输出字符串,例如:“Hello, %s" % ("World")兼容2.0的语法外,还可以用format()函数,例如:“Hello, {}.format("World")
源文件的编码格式默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 --默认采用utf-8
数据类型有整型int、长整型long只有整型int
代码规范源码不规范,重复代码很多源码精简,美观、优雅

3. Python的特点

  • 简单易读易学:Python是非常简单的语言,并且具有清晰的风格和强制缩进,Python具有简单的语法,极其容易入门。
  • 免费其开源:Python是自由/开放源码的软件。可以自行对其源代码进行修改使用。
  • 可移植性:Python可以被移植在许多平台上,常用的平台包括Linux、Windows、VxWorks、PlayStation、Windows CE、PocketPC等。
  • 解释性: Python解释器把源代码转换成字节码,然后再把它翻译成计算机使用的机器语言并运行,即Python代码在运行之前不需要编译。
  • 面向对象:Python支持面向对象的编程。程序通过组合(composition)与继承(inheritance)的方式定义类(class)。
  • 可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,那么可以将部分程序用C或C++进行编写,然后在Python程序中调用。
  • 可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
  • 交互式命令行:python可以单步直译运行,可以在一个 Python 提示符 >>> 后直接执行代码。
  • 丰富的标准库:Python标准库包括字符串处理(字典、数组切片、正则表达式re)、文档生成、多线程、串行化、数据库、HTML/XML解析(BeautifulSoup,Expat)、单元测试(PyUnit)、代码版本控制(PySVN)、WAV文件、网络控制(urllib2)、密码系统、GUI(图形用户界面,PyQt)、图形模块(Tkinter、PyTCL、WxPython)等。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
  • 规范性:采用强制缩进的方式使得代码具有较好可读性,减少了视觉上的错乱。
  • 胶水语言:python经常用作将不同语言编写的程序“粘”在一起的胶水语言。Boost.Python使得Python和C++的类库可互相调用(.pyc);Jpython是用Java实现的Python,可以同时使用两者的类库;Ironpython是Python在.NET平台上的版本。

4. Python编译和运行过程

首先将Python源代码编译生成Python字节码,然后再由Python虚拟机来执行Python字节码,最后在终端输出运行结果。

以下是简要说明:

  1. 源代码:编写Python源代码(.py文件)。
  2. 编译:Python解释器将源代码编译成字节码(Python Byte Code,扩展名一般为.pyc文件)。
  3. 解释:Python虚拟机(Python Virtual Machine,简称PVM)读取字节码并逐行解释执行。
  4. 执行:最终运行代码,执行相应的操作,比如终端输出。
alt

注意:

Python是一种解释型语言,指的是解释Python字节码,而不是Python源代码。这种机制的基本思想与Java和.NET是一致的。

4.1 Python解释器

Python解释器(*Interpreter*)是把Python语言翻译成计算机 CPU 能听懂的机器指令。

首先可以在命令提示行输入python --version来查看python的版本:

$ python --version
Python 3.10.8

然后在命令提示符中输入"Python"命令来启动Python解释器:

$ python
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help""copyright""credits" or "license" for more information.
>>>

Python解释器由多个组件构成,这些组件共同合作,实现Python代码的解析、编译和执行。以下是Python解释器的主要组件:

  1. 词法分析器(Lexer/Tokenizer)

    • 功能:将源代码转换为标记(token)序列,这些标记是编程语言的基本组成部分,如关键字、变量名、操作符等。
    • 工作原理:扫描源代码的字符流,将其分割成有意义的标记,供语法分析器使用。
  2. 语法分析器(Parser)

    • 功能:将标记序列转换为抽象语法树(AST),表示代码的结构和语法。
    • 工作原理:根据语言的语法规则,解析标记序列,构建出反映代码层次关系的树状结构。
  3. 语义分析器(Semantic Analyzer)

    • 功能:检查AST的语义正确性,确保变量、类型和操作符的使用符合语言规则。
    • 工作原理:执行类型检查、作用域解析等任务,以验证代码的逻辑正确性。
  4. 编译器(Compiler)

    • 功能:将AST转换为字节码(bytecode)。
    • 工作原理:将高层次的语言结构翻译成低层次的指令序列,便于虚拟机执行。
  5. 字节码

    • 简介:一种中间表示形式,介于源代码和机器码之间。
    • 特点:字节码是跨平台的,可移植的,与特定的硬件无关。
  6. Python虚拟机(Python Virtual Machine, PVM)

    • 功能:解释和执行字节码。
    • 工作原理:PVM逐条读取字节码指令,并将其转换为机器指令或直接执行相应的操作。
  7. 运行时环境(Runtime Environment)

    • 功能:提供程序执行所需的基础设施,如内存管理、垃圾回收、标准库支持等。
    • 特点:包括内存分配器、垃圾回收器、内置函数和对象模型等。
  8. 标准库(Standard Library)

    • 功能:提供一组常用模块和包,支持文件操作、网络通信、数据处理等任务。
    • 特点:丰富的模块集成在解释器中,直接可用。

4.2 Python解释器具体实现

  • Cpython:用C语言开发的,在命令行下运行Python就是启动Cpython解释器,官方下载的python2.7均为Cpython。Cpython用>>>作为提示符。
  • Ipython:基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符。
  • PyPy:主要针对执行速度。采用JIT技术,对Python代码进行动态编译。绝大部分Python代码都可以在PyPy下运行。
  • Jpython:运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
  • IronPython:运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
  • Boost.Python:使得Python和C++的类库可互相调用(.pyc)。

以下是Python解释器种类的整理表格:

解释器简介特点优点缺点
CPython默认的、最常用的Python解释器用C语言编写,最广泛使用,兼容性最好。官方下载的python均为Cpython,用>>>作为提示符。稳定,支持大多数的Python库和模块性能较低,主要由于GIL(全局解释器锁)的限制
IPython基于CPython之上的一个交互式解释器提供强大的交互式shell,支持自动补全、调试器等。IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符。非常适合数据科学和研究工作,提供了更好的用户体验和丰富的功能主要用于交互式计算,不适合作为生产环境的解释器
PyPy采用JIT(即时编译)技术的Python解释器,对Python代码进行动态编译比CPython更快,特别是在长时间运行的程序中。绝大部分Python代码都可以在PyPy下运行。显著提高性能,特别适用于计算密集型任务与CPython的兼容性不完全,某些库可能无法使用。
Jython运行在Java平台上的Python解释器可以直接调用Java库和类,可以直接把Python代码编译成Java字节码执行。与Java无缝集成,适合需要在Java平台上运行的应用性能不如CPython,更新较慢
IronPython运行在微软.NET平台上的Python解释器可以直接调用.NET框架的类和库,可以直接把Python代码编译成.Net的字节码。与.NET无缝集成,适合需要在.NET平台上运行的应用与CPython的兼容性不完全,某些库可能无法使用
MicroPython用于微控制器和资源受限环境的Python解释器精简版的Python解释器,适用于嵌入式系统体积小,适合嵌入式开发和物联网(IoT)应用功能受限,不支持所有的Python标准库
Pyston采用JIT技术的Python解释器,旨在提高CPython的性能与CPython完全兼容,同时在性能上有所提升提高性能,特别是在计算密集型任务中。Pyston 是 Python 的基于 JIT 另一种实现,更快且高度兼容 CPython,和另一个被寄予厚望的 pypy 相比,Pyston 背后有 DropBox 的资金支持,发展会比 PyPy 更快。仍在发展中,稳定性和兼容性有待进一步验证
Boost.Python用于将C++与Python无缝集成的库允许在C++中嵌入Python解释器,或将C++类和函数暴露给Python使用适合需要高性能计算的应用,充分利用C++的性能优势,同时享受Python的易用性需要掌握C++编程,有一定的学习曲线,复杂性较高

4.3 Python虚拟机

python并不将py文件编译为机器码来运行,而是由python虚拟机一条条地将py语句解释运行,python虚拟机的执行方式就是模仿普通x86可执行文件运行方式。

虚拟机输入为字节码.pyc文件,由字节码文件加载器将二进制的.pyc文件加载到内存,由执行引擎解释执行,输出为字节码文件的执行结果。

4.4 Python字节码

Python字节码(Python Bytecode)是Python源代码编译后的中间表示形式。字节码是与特定硬件无关的低级表示,适合Python虚拟机(PVM)解释执行。字节码文件通常以.pyc扩展名存储。

  • 跨平台:字节码独立于具体的硬件和操作系统,可以在任何支持相应Python解释器的平台上运行。
  • 优化执行:通过将源代码编译为字节码,可以减少源代码解析的开销,提高执行效率。

当Python脚本首次运行时,解释器会将源代码(.py文件)编译为字节码,并将字节码存储在__pycache__目录下,以.pyc文件形式保存。之后运行相同脚本时,解释器会直接使用已有的字节码文件,除非源代码发生了变化。

备注

Python中的字节码(bytecode) 是一种数据类型, Python代码的编译结果就是bytecode对象。bytecode对象可以由虚拟机加载后直接运行,而pyc文件就是bytecode在硬盘上的保存形式。

4.5 Python源代码编译和执行的详细流程

  1. 源代码输入

    • Python解释器读取并加载Python源代码(.py文件)。
  2. 词法分析(Lexical Analysis)

    • 词法分析器将源代码转换为标记(token),这些标记是编程语言的基本组成部分。
  3. 语法分析(Parsing)

    • 语法分析器根据标记序列构建抽象语法树(AST),表示代码的结构和语法。
  4. 语义分析(Semantic Analysis)

    • 语义分析器检查AST的语义正确性,确保变量、类型和操作符的使用符合语言规则。
  5. 字节码生成(Bytecode Generation)

    • 编译器将AST转换为字节码,生成的字节码是跨平台的低级表示形式。
  6. 存储字节码(Bytecode Storage)

    • 编译后的字节码保存为 .pyc文件,存储在 __pycache__目录下,以便后续使用。
  7. 字节码加载

    • 当再次运行相同的Python脚本时,解释器首先检查是否存在对应的字节码文件(.pyc)。
    • 如果存在且未过期,直接加载字节码文件;否则,重新编译源代码生成新的字节码。
  8. 执行字节码(Execution by PVM)

    • Python虚拟机(PVM)读取字节码文件,逐条解释和执行字节码指令。
    • PVM负责内存管理、垃圾回收、动态类型检查和其他运行时任务。

以下是上述流程的图示:

alt

5. Python的应用

应用领域描述示例库和工具应用示例
Web开发创建动态网站、处理HTTP请求、数据库操作等Django、Flask、PyramidDjango用于开发Instagram,Flask用于开发Pinterest
数据科学与机器学习数据处理与分析、机器学习模型训练与预测、数据可视化等NumPy、Pandas、Matplotlib、Scikit-learn、TensorFlow、Keras、PyTorch使用TensorFlow进行图像识别,使用Pandas进行数据分析
网络爬虫、自动化与脚本编写自动化任务、网络爬虫、数据抓取、自动化测试等。用于搜索引擎、深度学习等领域提供数据源。Selenium、Beautiful Soup、Scrapy、pyautogui、requests、pytest使用Selenium进行浏览器自动化测试,使用Scrapy进行网页数据抓取,使用Beautiful Soup解析HTML内容
科学计算与工程科学计算、符号数学、图像处理等SciPy、SymPy、OpenCV、Biopython使用SciPy进行数值计算,使用OpenCV进行图像处理
人工智能与自然语言处理自然语言处理、文本分析、语音识别、聊天机器人等NLTK、spaCy、GPT、Transformers使用NLTK进行文本分类,使用Transformers进行语言模型训练
数据科学NumPy扩展提供大量与许多标准数学库的接口。机器学习(scikit-learn、TensorFlow框架)、数据统计分析和可视化(Matplotlib、seaborn框架)。NumPy、Pandas、Matplotlib、seaborn、scikit-learn、TensorFlow使用NumPy进行数值计算,使用scikit-learn训练机器学习模型,使用Matplotlib进行数据可视化
游戏开发2D游戏开发、图形渲染、游戏逻辑控制Pygame、PyKyra使用Pygame开发简单的2D游戏
桌面应用开发使用PyQt、Kivy等框架进行图形用户界面程序的开发。PyQt、Kivy使用PyQt开发桌面应用,使用Kivy开发跨平台应用
教育与教学编程教学的入门语言,广泛用于计算机科学教育无需特定库很多学校和在线课程使用Python作为教学语言
金融与量化交易金融数据分析、量化交易策略开发、回测QuantLib、Zipline、PyAlgoTrade使用Zipline开发和回测交易策略
网络与系统运维自动化配置管理、远程命令执行、系统监控Ansible、SaltStack、Fabric使用Ansible进行大规模服务器配置管理
区块链与加密货币开发区块链应用、智能合约、加密货币交易Web3.py、pyethereum使用Web3.py与以太坊区块链进行交互
物联网(IoT)开发嵌入式系统和物联网设备MicroPython、CircuitPython使用MicroPython开发小型物联网设备
网络安全渗透测试、网络分析、加密解密等Scapy、Paramiko、PyCrypto使用Scapy进行网络包分析,使用PyCrypto进行数据加密
Linux/UNIX运维提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理。os、shutil、subprocess使用os模块进行文件系统操作,使用subprocess模块执行系统命令
移动App开发使用PyQt、Kivy等进行移动应用开发。Python的PyOpenGL模块封装了OpenGL应用程序编程接口,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。PyQt、Kivy、PyOpenGL、PyGame使用Kivy开发跨平台移动应用,使用PyOpenGL进行图形处理,使用PyGame开发移动游戏
网络编程基于Socket等协议,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。许多大规模软件开发计划如Zope,Mnet及BitTorrent,Google都在广泛地使用它。socket、asyncio、Twisted使用socket模块开发聊天程序,使用Twisted开发分布式应用
图形处理有PIL、Tkinter等图形库支持,能方便进行图形处理。PIL、Pillow、Tkinter使用Pillow进行图像处理,使用Tkinter开发图形界面
文本处理提供re模块支持正则表达式,还提供SGML、XML分析模块,许多程序员利用Python进行XML程序的开发。re、xml.etree.ElementTree、Beautiful Soup使用re模块进行文本搜索,使用xml.etree.ElementTree解析XML文档
数据库编程可通过遵循Python DB-API规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。sqlite3、SQLAlchemy、psycopg2、PyMySQL使用sqlite3操作SQLite数据库,使用SQLAlchemy进行ORM映射

python应用举例:

  • Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等
  • NASA - 美国宇航局,从1994年起把python作为主要开发语言
  • 豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站
  • Torchlight --Python编写的大型3D游戏,原Blizzard公司人员制作发行,开源
  • Blender - 以C与Python开发的开源3D绘图软件 在科学研究中也得到广泛的应用

本文由 mdnice 多平台发布

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

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

相关文章

AIGC-常见图像质量评估MSE、PSNR、SSIM、LPIPS、FID、CSFD,余弦相似度----理论+代码

持续更新和补充中…多多交流! 参考: 图像评价指标PNSR和SSIM 函数 structural_similarity 图片相似度计算方法总结 MSE和PSNR MSE: M S E 1 m n ∑ i 0 m − 1 ∑ j 0 n − 1 [ I ( i , j ) − K ( i , j ) ] 2 MSE\frac{1}{mn}\sum_{i0}^{m-1}\sum_{j0}^{n-1}[…

汽车展厅应用客流统计,洞察客户规律,完成热门车型分析

在汽车展厅中,客流统计正逐渐成为一项不可或缺的重要工具,它帮助我们洞察客户规律,从而能够更好地完成热门车型分析。 一、客流统计-客户画像分析 客流统计下的客户画像构建为我们提供了深入了解客户的途径。通过对进入展厅的人群进行细致分析…

2007NOIP普及组真题 4. Hanoi双塔问题

线上OJ: 【07NOIP普及组】Hanoi双塔问题 题解分析 1、本题考的其实不是Hanoi塔,而是瞪眼法(数学推导)和高精度。 2、本题不需要输出移动的顺序,只是输出移动的次数即可。 核心思想: 1、从上述图中&#x…

常见算法(3)

1.Arrays 它是一个工具类,主要掌握的其中一个方法是srot(数组,排序规则)。 o1-o2是升序排列,o2-o1是降序排列。 package test02; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparat…

PostgreSQL用户与角色简述

简述 PostgreSQL通过角色(role)来控制数据库的访问权限。角色可以拥有数据库对象(比如表、函数等),并允许将这些对象的权限授予其他角色,从而实现对象访问的控制。角色(role)包含了…

虹科Pico汽车示波器 | 免拆诊断案例 | 2012 款雪佛兰科鲁兹车偶尔多个故障灯异常点亮

故障现象 一辆2012款雪佛兰科鲁兹车,搭载1.8 L 发动机,累计行驶里程约为9.6万km。该车组合仪表上的发动机故障灯、ABS故障灯及动力转向故障灯偶尔异常点亮,同时发动机转速表和发动机冷却液温度表的指针会突然归零,严重时发动机无…

独享IP是原生IP吗?二者有何区别?

原生IP: 原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中…

牛客NC367 第K个n的排列【困难 dfs,全排列问题 Java/Go/PHP/C++】

题目 题目链接: https://www.nowcoder.com/practice/1595969179464e4c940a90b36abb3c54 思路 全排列问题本文提供的答案在力扣同一道题60. 排列序列,超时了但是截止文章发表日,牛客上是能通过全部测试用例的Java代码 import java.util.*;pu…

Redis - 优惠卷秒杀

场景分析 为了避免对数据库造成压力,我们在新增优惠卷的时候,可以将优惠卷的信息储存在Redis中,这样用户抢购的时候访问优惠卷信息,通过Redis读取信息。 抢购流程: 业务分析 既然在新增优惠卷的时候,我…

【c语言】了解指针,爱上指针(5)

了解指针,爱上指针(5) 回调函数qsort函数冒泡排序模拟实现qsort函数 回调函数 回调函数:就是一个通过函数指针调用的函数。 把函数的指针作为参数传给另一个函数,当这个指针被用来调用指向的函数时,此时被…

驱动编译报error: negative width in bit-field ‘<anonymous>’错误

错误如下图所示: 代码如下: 问题点:module_param的其他用户的权限参数上。 在Linux中,文件权限由读(r)、写(w)、执行(x)权限组成,分别对应数值4、2、1。 第一位0是占位符,在这里没有意义,因为…

如何使用DotNet-MetaData识别.NET恶意软件源码文件元数据

关于DotNet-MetaData DotNet-MetaData是一款针对.NET恶意软件的安全分析工具,该工具专为蓝队研究人员设计,可以帮助广大研究人员轻松识别.NET恶意软件二进制源代码文件中的元数据。 工具架构 当前版本的DotNet-MetaData主要由以下两个部分组成&#xf…

java图书电子商务网站的设计与实现源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书电子商务网站的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 图书电子商…

基于附带Attention机制的seq2seq模型架构实现英译法的案例

模型架构 先上图 我们这里选用GRU来实现该任务,因此上图的十个方框框都是GRU块,如第二张图,放第一张图主要是强调编码器的输出是作用在解码器每一次输入的观点,具体的详细流程图将在代码实现部分给出。 编码阶段 1. 准备工作…

【C++进阶】AVL树

0.前言 前面我们已经学习过二叉搜索树了,但如果我们是用二叉搜索树来封装map和set等关联式容器是有缺陷的,很可能会退化为单分支的情况,那样效率就极低了,那么有没有方法来弥补二叉搜索树的缺陷呢? 那么AVL树就出现了&…

6.小程序页面布局 - 账单明细

文章目录 1. 6.小程序页面布局 - 账单明细1.1. 竞品1.2. 布局分析1.3. 布局demo1.4. 页面实现-头部1.5. 账单明细1.5.1. 账单明细-竞品分析1.5.2. 账单明细-实现1.5.2.1. 账单明细-实现-mock数据1.5.2.2. 每日收支数据的聚合整理1.5.2.3. 页面scroll-view 1.6. TODO 1. 6.小程序…

java —— 封装、继承、接口和多态

一、封装 封装是将数据和操作这些数据的方法整合成一个类。在这个类中,用 private 修饰符将某些数据隐藏起来,只通过特定的方法实现这些数据的访问和修改,以此实现数据的完整和安全性。 封装的步骤: 二、继承 继承是指把子类共有…

Meta发布Chameleon模型预览,挑战多模态AI前沿

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【数据结构与算法】之堆的应用——堆排序及Top_K问题!

目录 1、堆排序 2、Top_K问题 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、堆排序 对一个无序的数组…

03_前端三大件CSS

文章目录 CSS用于页面元素美化1.CSS引入1.1style方式1.2写入head中,通过写style然后进行标签选择器加载样式1.3外部样式表 2.CSS样式选择器2.1 元素选择器2.2 id选择器2.3 class选择器 3.CSS布局相关3.1 CSS浮动背景:先设计一些盒子因此,引出…