1.29学习日志

news/2025/2/1 23:21:12/文章来源:https://www.cnblogs.com/dynastyeast/p/18696581

今日初步了解了python语言。
Python 是一种广泛使用的高级编程语言,它具有许多优点,但也有一些局限性。以下是 Python 的优缺点总结:
优点
易读性和易学性
代码简洁:Python 的语法简洁明了,接近自然语言,可读性强。这使得初学者能够快速上手,减少学习曲线。
代码可维护性高:清晰的语法结构和规范的代码风格使得代码易于维护和扩展,团队协作开发时也更加高效。
跨平台性
Python 可以在多种操作系统上运行,如 Windows、Linux、macOS 等。Python 解释器在不同平台上都能很好地工作,这意味着开发者可以编写一次代码,在多个平台上运行,无需进行大量的修改。
丰富的库和框架
标准库强大:Python 自带了丰富的标准库,涵盖了文件操作、网络编程、数据处理、系统管理等多个方面。例如,os 模块用于操作系统相关的功能,json 模块用于处理 JSON 数据。
第三方库丰富:Python 拥有庞大的第三方库生态系统,几乎涵盖了所有常见的开发领域。例如:
数据科学:NumPy、Pandas、Matplotlib、SciPy 等,用于数据分析、可视化和科学计算。
机器学习与人工智能:TensorFlow、PyTorch、Scikit-learn 等,提供了强大的机器学习和深度学习工具。
Web 开发:Django、Flask 等框架,用于快速开发高性能的 Web 应用。
自动化运维:Ansible、SaltStack 等工具,用于服务器管理和自动化部署。
强大的社区支持
Python 拥有庞大的开发者社区,无论是初学者还是资深开发者,都能在社区中找到大量的学习资源、技术文档、开源项目和解决方案。遇到问题时,可以通过社区论坛(如 Stack Overflow)、开源项目(如 GitHub 上的 Python 项目)等渠道快速找到答案。
动态类型系统
Python 是一种动态类型语言,变量在使用时不需要显式声明类型,解释器会在运行时自动推断类型。这使得代码更加灵活,开发速度更快。
这种动态特性减少了代码量,但也需要注意类型错误。
可扩展性和可嵌入性
Python 可以方便地与其他语言(如 C、C++)结合。开发者可以使用 C 或 C++ 编写性能敏感的模块,然后在 Python 中调用,从而提高程序的运行效率。此外,Python 代码也可以嵌入到其他语言的程序中,作为扩展模块使用。
多范式支持
Python 支持多种编程范式,包括面向对象、函数式编程、命令式编程等。开发者可以根据项目需求选择合适的编程风格,例如:
面向对象:可以定义类和对象,实现封装、继承和多态。
函数式编程:可以使用高阶函数、闭包等特性,代码更加简洁和模块化。
缺点
性能问题
Python 是一种解释型语言,运行速度相对较慢,尤其是在处理大量数据或高性能计算时。与编译型语言(如 C、C++)相比,Python 的执行效率较低。例如,在大规模数值计算中,纯 Python 代码的运行速度可能比 C/C++ 慢一个数量级。
解决方法:可以通过优化算法、使用第三方库(如 NumPy、Cython)或将性能敏感部分用 C/C++ 编写来提升性能。
全局解释器锁(GIL)
Python 的全局解释器锁(GIL)限制了同一时刻只有一个线程可以执行 Python 字节码。这意味着在多线程环境下,Python 的多线程程序无法充分利用多核 CPU 的优势,只能实现并发,而不是真正的并行。
解决方法:可以使用多进程(如 multiprocessing 模块)来绕过 GIL,或者使用其他语言(如 Go、Rust)来处理多线程任务。
内存消耗较大
Python 的数据类型(如列表、字典等)在内存中占用空间较大,尤其是在处理大量数据时,可能会导致内存使用率过高。例如,一个简单的 Python 字典对象可能占用较多内存。
解决方法:可以通过优化数据结构(如使用生成器、数组等)或使用内存管理工具(如 gc 模块)来减少内存消耗。
移动开发支持有限
Python 在移动开发领域的支持相对较弱,虽然有一些框架(如 Kivy、BeeWare)可以用于开发移动应用,但它们的生态和功能与主流的移动开发语言(如 Swift、Kotlin)相比仍有差距。例如,Kivy 开发的移动应用在性能和用户体验上可能不如原生应用。
多平台部署复杂性
虽然 Python 是跨平台的,但在不同平台上部署 Python 应用时,可能会遇到一些兼容性问题,例如库版本冲突、依赖环境差异等。需要使用工具(如 pipenv、conda)来管理依赖,确保不同环境下的运行一致性。
代码规范性要求高
Python 的动态类型系统虽然灵活,但也容易导致类型错误。如果开发者不遵循良好的编码规范,可能会在运行时出现各种问题。例如,变量类型不匹配可能导致程序崩溃。
总结
Python 是一种功能强大且灵活的编程语言,其易学易用、跨平台、丰富的库和强大的社区支持使其在多个领域(如 Web 开发、数据分析、人工智能等)得到了广泛应用。然而,它也有一些缺点,如性能问题和 GIL 的限制。开发者可以根据项目需求和应用场景,合理选择 Python 或其他语言,或者结合多种语言的优势来解决实际问题。

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

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

相关文章

Windows环境变量列表变成老式的横行封号分割PATH路径不方便

前言全局说明win11上环境变量的增、删、改有了专用的列表框,每行一个的环境变量,观察也非常方便。 但有的时候设置完变量,再次打开PATH环境变量,就变成以前win7那样的所有环境变量都在一行,用封号分割了,非常不方便。一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.37…

Spring MVC 初始化

继承关系 DispatcherServlet > FrameworkServlet > HttpServletBean > HttpServlet > GenericServlet > Servlet初始化流程DispatcherServlet 是一个 Servlet,所有的 Servlet 初始化都会执行 init 方法(JAVA EE 的知识,别忘了)HttpServletBean 复写了 init(…

kmp匹配

kmp匹配 代码: #include<bits/stdc++.h> using namespace std; const int N=1e5+6; const int M=1e6+6; char s[M];//长串 char p[N];//模式串 int ne[N];//next指针 ,后退的指针 int main(){int n,m;cin>>n>>p+1>>m>>s+1;//计算ne //ne[1]…

Tokenizer

一、思维导图二、subword(子词)粒度 在很多情况下,既不希望将文本切分成单独的词(太大),也不想将其切分成单个字符(太小),而是希望得到介于词和字符之间的子词单元。这就引入了 subword(子词)粒度的分词方法。本文重点介绍这一部分。 2.1 WordPiece 在BERT时代,Wor…

MyBatis之作用域和生命周期

弄清楚SqlSessionFactoryBuild,SqlSessionFactory,SqlSession的作用域和生命周期,可以避免高并发程序中的资源浪费 具体知识点看狂神的两张ppt就行了

CF856C 题解

很厉害的排列计数0 原题链接:luogu & CF 在任务清单里放了半年,今天终于做出来了 qwq,不得不写题解了。 1 能被 \(11\) 整除的数长什么样子?它的奇数位之和与偶数位之和应当模 \(11\) 同余。 我们不妨把一个数的价值定为从前往后奇数位之和减去偶数位之和模 \(11\) 的值…

人生不止于职业发展

0 你的问题,我知道! 工作意义是啥?职业发展在人生啥角色? 1 工作意义 农村人努力学习考上大学,得好工作,为逃离同村同龄人十几岁就工厂打工命运,过不凡人生,实现改命的唯一途径。毕业就进入自带光环的大厂,有份让所有亲戚羡慕的公司和薪水。我认为工作价值是让自己自立…

『Python底层原理』--CPython如何编译代码

前一篇我们介绍了CPython VM的运行机制,它基于一系列字节码指令来实现程序逻辑。 不过,Python字节码在完整描述代码功能上存在局限性,于是代码对象应运而生。像模块、函数这类代码块的执行,本质上就是对应代码对象的运行,代码对象涵盖了字节码、常量、变量名以及各类属性信…

MyBatis之jdbc属性外部配置

将jdbc数据库连接属性写在db.properties中,如图 然然后在配置文件中引入

25.2.1小记

Object类Object类中自带的toString和equals函数(默认比较管理者是否管理相同的对象,可以通过对子类函数的重构实现正常比较) // @Override//重写,编译器会默认构造类型检查public boolean equals(Object obj) {//向下造型CD cc = (CD)obj;return artist.equals(cc.artist…

“尝试一下挣钱的辛苦”之装师

我尝试了把我做的兽头卖出去,记录一下从孩子出生到找到妈咪领养的过程 因为没有太多预算,所以兽设没有找画师,我自己构思的;整个制作过程都要用到热熔胶,很容易烫到>_<(热熔胶——手作娘离不开的东西),梳理毛布也很让人头疼,弄得房间里都是毛毛,虽然但是,孩子…

“尝试一下挣钱的辛苦”

我尝试了把我做的兽头卖出去,记录一下从孩子出生到找到妈咪领养的过程 因为没有太多预算,所以兽设没有找画师,我自己构思的;整个制作过程都要用到热熔胶,很容易烫到>_<(热熔胶——手作娘离不开的东西),梳理毛布也很让人头疼,弄得房间里都是毛毛,虽然但是,孩子…