[python学习手册-笔记]001.python前言
001.python前言
❝
本系列文章是我个人学习《python学习手册(第五版)》的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展。
非商业用途转载请注明作者和出处;商业用途请联系本人(gaoyang1019@hotmail.com)获取许可。
❞
关于python优缺点的分析
python可读性高,移植性较好 代码简洁,完成同样的问题相比java和C++,代码量是其的1/5~1/3 效率相对C语言叫差,但也不是那么差 开源,社区活跃度很高,官方和民间提供了很多的库可以直接使用
❝
这里引申出一个问题,关于开源的优缺点。以下内容为个人理解,仅代表我的个人观点,不具备权威性
开源的优点
1)源代码开放,相对比较安全;
2)开源软件大部分可以免费使用,即使需要付费许可,其许可费用相对也比较低。
3)开源软件的社区一般比较活跃,软件更新迭代速度很快。
关于开源软件的缺点
1)开源软件一般由相应的社区维护,其迭代速度取决于社区的活跃度。而且有可能因为开发人员的兴趣转移或者其他因素导致软件停止维护,存在一定的风险
2)开源软件的使用门槛相对来说比较高,虽然节省了开发成本,但是对部署和维护人员来说,要求一定的技术能力。比如,如果使用商业软件,后期的支持等工作可以由软件提供商负责,而开源软件并不存在响应的责任部门,所以部署维护全要靠自己的技术人员完成。这也就是为啥虽然开源软件许可费用很低甚至免费,很多公司机构依旧会选用商业软件的原因。毕竟能用钱解决的问题,对于有钱人来说都不是问题。
3)开源软件缺乏主导的控制,开源社区是一个自由度相对较高的社区。缺乏绝对的主导。这就会因为开源社区过于活跃,导致版本分支的混乱。
❞
python运行过程
python是个解释型语言。这句话说的对,但不完全对。
首先简单说明下解释型语言和编译型语言:
「编译型语言:「源代码被」编译器」经过一连串的处理最终生成的是和处理器指令集强相关的,可以被处理器直接执行的二进制文件。 典型的C语言和C++。以常用的GCC编译器为例,从代码编程可执行的二进制文件要经过预编译->编译->汇编->链接等多个步骤。 优点:编译型语言从源码到可执行二进制文件时在运行前就已经完成的。所以在执行的时候不需要再次处理源码,效率较高 缺点:同样的,因为源码在执行前已经被处理成为处理器强相关的二进制文件,所以移植性很差。
「解释型语言:「源代码由」解释器」在「运行时」逐句翻译成机器码。 java,python等语言都属于这一类。但是又不严格的属于这一类。因为现在所谓的解释型语言都有所谓的优化,实际解释器在翻译的并不是源码,而是经过预处理的“半成品” 优点:由解释器执行翻译,平台不相关,移植性好。 缺点: 效率低 因为平台和源码之间还有个解释器,所以在部署的时候,需要先安装相关的运行环境比如java的jre等。当然也可以打包成对应的二进制文件,像py2exe这样的工具,但是它也是将python解释器和源码(字节码)同时打包了而已。
「python的运行过程」
源码(.py)先被解释器处理成字节码(.pyc) 程序运行时,字节码(.pyc)被解释器解释成可执行的指令
关于程序执行这一块暂时不讲,在后续的“有生之年系列”可能会有相关文章讲述这一块。
这里简答说一下字节码.pyc文件的生成。首先,字节码是一种平台无关的,低级的表现形式,主要用来提高运行速度。
如果python解释器具有写入的权限,在python3.2之前,字节码文件会被保存在源码目录下的子目录__pycache__中,且解释器版本信息会保存在对应的.pyc文件内。在python3.2之后,字节码文件依旧会保存在该目录下,但是版本信息会保存在文件名中,如下图所示:

如果python解释器不具备写入权限,同样会生成字节码文件,但是该文件会保存在内存中.
「何时重新编译」
如果源码没有修改的话,在再次执行该代码的时候,python解释器会直接解释对应的字节码文件而不需重新"编译"(注意,这个编译是打了引号的.)字节码.那么何时重新"编译"字节码呢?两种情况:
「源文件改变:」 python解释器会检查源文件和字节码文件的最后修改的时间戳,如果时间不一致,则重新"编译"字节码 「解释器版本改变:」 如果字节码文件所使用的的解释器版本和当前执行代码所使用的解释器版本不一致,则重新"编译"
python的解释器
python的解释器有很多实现,这里介绍一下比较出名的几个.了解一下就好,毕竟用的最多的还是标准的CPython.
「CPython:」 由ANSI C语言实现,是标准的Python解释器. 我们在python官网下载的python套件中使用的就是CPython 运行速度最快,最完成,最新,最健全
「Jython:」 这玩意儿的目的是将Python和Java集成,将Python源码翻译成Java的字节码以便于使其运行在JVM上. 「IronPython:」 和Jython差不多,但是这家伙的目的是使python运行在.net框架之下. 「Stackless:」 CPython针对并发的优化,引入了协程的概念 「PyPy:」 采用JIT(just in time)技术,据说可以比python甚至C语言更快,在算法密集和计算密集的场景下性能更为突出.(这块不懂,不敢瞎白话)
本文使用 mdnice 排版
[python学习手册-笔记]001.python前言的更多相关文章
- [python学习手册-笔记]002.python核心数据类型
python核心数据类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...
- [python学习手册-笔记]003.数值类型
003.数值类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- [python学习手册-笔记]004.动态类型
004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- 15、python学习手册之:python语句、赋值、表达式和打印
1.语句的另一个特殊规则是用一对括号把语句括起来就可以:括号().方括号[].字典的大括号{}.任何括在这些符号里的程序代码都可横跨好几行. 2.括号是可以包含一切的,因为任何表达式都可以包含在内,只 ...
- Python学习基础笔记(全)
换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...
- 转载-《Python学习手册》读书笔记
转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html
- 自学笔记系列:《Python学习手册 第五版》 -写在开始之前
今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...
- 《Python学习手册》读书笔记
之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我 ...
- 《Python学习手册》读书笔记【转载】
转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...
随机推荐
- notepad快捷使用
1.快捷键 参考:https://www.php.cn/tool/notepad/428638.html notepad++是经常使用的一款编辑器软件,在编辑特殊文本的时候(html,java...) ...
- matlab中fseek 移至文件中的指定位置
文章来源:https://ww2.mathworks.cn/help/matlab/ref/fseek.html?searchHighlight=fseek&s_tid=doc_srchtit ...
- 【题解】SP10570 【LONGCS - Longest Common Substring】
\(\color{Red}{Link}\) \(\text{Solution:}\) 还是\(\text{Suffix Tree.}\) 根据\(\color{Blue}{Link}\)我们可以得到一 ...
- JavaScript实时显示当前时间
1.HTML部分 <div id="div1">显示当前时间!</div> 2.css部分 #div1 { width: 700px; height: 50 ...
- 物联网wifi模块
物联网wifi模块 物联网wifi模块 是上海卓岚推出的MQTT+JSON转Modbus物联网WiFi核心模块.支持以MQTT的方式连接云端服务器,支持可以界面话配置,自主采集Modbus仪表/645 ...
- day27 Pyhton 面向对象02 类和对象的命名空间
一.内容回顾 类:具有相同属性和方法的一类事务 # 描述一类事务轮廓的一个机制 #商品/用户/店铺 对象/实例: 对象(实例)就是类的实例化 # 对象就是类的一个具体的表现 #某一件特定的商品/某个人 ...
- day13 Pyhton学习
一.昨日内容回顾 生成器 本质就是迭代器 特点: 1.省内存 2.惰性机制 3.只能向前,不能反复 生成器函数 函数中包含yield. yield表示返回和return,分段执行一个函数 def fu ...
- 在shell中截取心仪的字符串
file=/dir1/dir2/dir3/my.file.txt ${file#*/} 去掉左边 ${file##*/} 去掉左边最后一个 ${file%/*} 去掉右边 ${file%%/*} 去掉 ...
- pytest文档57-计算单元测试代码覆盖率(pytest-cov)
前言 我们在做测试的时候,经常遇到领导的灵魂拷问:你的测试用例覆盖率是多少,达到100%了么?你如何保证你的测试质量? 测试用例的覆盖率如何统计呢,如何知道开发的代码,我们都测到了,不会存在漏测的情况 ...
- 【C语言编程入门笔记】排序算法之快速排序,一文轻松掌握快排!
排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and con ...