[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,觉 ...
随机推荐
- matlab中卷积convolution与filter用法
转自:https://blog.csdn.net/dkcgx/article/details/46652021 转自:https://blog.csdn.net/Reborn_Lee/article/ ...
- C语言中 malloc
参考:https://blog.csdn.net/kokodudu/article/details/11760863 一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: ...
- Linux中的硬链接和软连接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...
- 【题解】 [EZEC-4]求和
对于百分之十的数据:随便过. 下面推式子: \[\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)^{i+j} \] \[=\sum_{d=1}^n\sum_{i=1}^n\sum_{ ...
- 【基础】dp系列1
序列双段最大子段和问题 (也许很水但蒟蒻刚刚学dp就来记录一下) 题目链接 题意就是求序列中的任意两段的最大子段和最大. 我们先预处理出来前缀和,方便求最大子段和. 对于每一个i都求一遍1到i的最大子 ...
- 执行新增和修改操作报错connection is read-only. Queries leading to data modification are not allowed
出现这个问题的原因是默认事务只有只读权限,因此要添加下面的每一个add*,del*,update*等等. 分别给予访问数据库的权限. 方法名的前缀有该关键字设置了read-only=true,将其改为 ...
- 如何彻底杀掉Oracle相关用户的会话
在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源 ...
- shell-的特殊变量-进程状态变量$$ $! $? $_详解
一:shell的特殊变量-进程状态变量详解 1. 进程状态变量 $$ 获取当前shell的进程号(pid) $! 执行上一个指令的pid,上一个后台运行进程的进程号 $? 获取执行上一个指令的返回值 ...
- ps 安装 ps 2017 下载 及教程(保姆式教程)
链接:https://pan.baidu.com/s/1GJHiwmxwRApFYhyNZBCQtQ 提取码:7r6u 以上是百度网盘的地址. 1.下载解压安装前先断网在安装点击set-up 软件,之 ...
- [Docker] redis 全配置
启动容器,加载配置文件并持久化数据 docker run -d --privileged=true -p 6379:6379 --restart always -v /usr/redis/conf:/ ...