【python技能树】python简介

1 Python定义

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

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

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

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

2 Python发展史

2.1 Python的发展

Python的创始人为Guido van Rossum。1989年,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。

Python 是由其他语言发展而来的,其中主要包括 ABC、Modula-3、C、C++、SmallTalk、Unix shell 等。

自从2004年以后,python的使用率呈线性增长。

Python 2于2000年10月16日发布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。

2.2 Python的版本更新

 目前python发布的版本过程主要包括如下:

发布版本

年份

GPL 兼容

0.9.0 至 1.2

1991-1995

1.3 至 1.5.2

1995-1999

1.6

2000

2.0

2000

1.6.1

2001

2.1

2001

2.0.1

2001

2.1.1

2001

2.1.2

2002

2.1.3

2002

2.2 及更高

2001至今

.........
3.10.4March 24, 2022

 目前python 的最新版本已经达到3.10.4,因此可见版本更新之快。

 

2.1 Python2.0与Python3.0的区别

  • 输出方面

Python2.0 使用print关键字进行输出,比如:print “Hello”;

Python3.0 使用print()函数,比如:print("Hello")。

  • 输入方面

Python2.0 使用raw_input()函数,比如:name=raw_input("请输入你的名字:");

Python3.0 使用input()函数,比如:name=input("请输入你的名字:")。

  • 字符串的编码格式

Python2.0 默认采用ASCII编码对输入的字符串进行编码;

Python3.0 默认采用Unicode编码对字符串进行编码。

  • 格式化字符串的方式

Python2.0 用%占位符进行标准化格式输出字符串,比如:“Hello,%s" % ("World");

Python3.0 用format()函数,比如:”Hello,{}“.format("World")。

  • 源文件的编码格式

Python2.0 默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 --;

Python3.0 默认采用utf-8。

  • 数据类型

python2.0 有整型int、长整型long

python3.0 只有整型int

  • 代码规范

python 2.0 源码不规范,重复代码很多

python 3.0 源码精简,美观、优雅

3 Python编译和运行过程

虽然Python源代码文件(.py)可以直接使用Python命令运行,但实际上Python并不是直接解释Python源代码,它是具有一个编译和运行的过程,具体过程如下图:

首先将Python源代码(.py文件)编译生成Python字节码(Python Byte Code,字节码文件的扩展名一般是.pyc),然后再由Python虚拟机(Python Virtual Machine,简称PVM)来执行Python字节码,最后在终端输出运行结果。

通过以上编译和运行过程可分析:Python是一种解释型语言,指的是解释Python字节码,而不是Python源代码。这种机制的基本思想与Java和.NET是一致的。

3.1 Python解释器

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

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

$ python --version
Python 3.7.4

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

$ python

执行以上命令后,出现如下信息:

$ python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Python解释器易于扩展,可以通过调用C语言或C++来扩展新功能和数据类型。

3.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)。

3.3 Python虚拟机

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

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

3.4 Python字节码(.pyc)

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

假如有个test.py文件需要执行,那么它会先生成.pyc文件,一般可能的情况如下:

  1. 执行 python test.py 会对test.py进行编译成字节码并解释执行,但不会生成test.pyc。
  2. 如果test.py中加载了其他模块,如import urllib2,那么python会对urllib2.py进行编译成字节码,生成urllib2.pyc,然后对字节码解释执行。
  3. 如果想生成test.pyc,可以使用python内置模块py_compile来编译,也可以执行命令 python -m py_compile test.py 这样,就生成了test.pyc。
  4. 加载模块时,如果同时存在.py和.pyc,python会使用.pyc运行,如果.pyc的编译时间早于.py的时间,则重新编译 .py文件,并更新.pyc文件。

如下为生成的.pyc文件示例:

4 Python的应用

Python的应用主要有以下领域:

  • Linux/UNIX运维:提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理。
  • GUI程序开发(PyQt、Kivy等)
  • Web程序开发(Django、Flask等框架):支持最新的XML技术。
  • 移动App开发(PyQt、Kivy等):Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
  • 网络爬虫(为搜索引擎、深度学习等领域提供数据源)
  • 网络编程(基于Socket等协议):提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。
  • 图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。
  • 文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
  • 数据库编程:可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。
  • 数据科学:NumPy扩展提供大量与许多标准数学库的接口。机器学习(scikit-learn、TensorFlow框架)、数据统计分析和可视化(Matplotlib、seaborn框架)。

python应用举例:

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

5 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平台上的版本。

6 Python优点

  • 易于学习,非常适合初学者,也特别适合专家使用
  • 可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本)
  • 可移植,跨平台
  • 可嵌入(使 ArcGIS 可脚本化)
  • 稳定成熟
  • 用户社区规模大

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python中打印彩色信息的方法

在Python中,可以使用print()函数打印出彩色信息。在使用print()打印之前,需要调用os标准库对系统进行设置。 1 os标准库 1.1 简介 os是Operating System的简写,即“操作系统”。os标准库是一个操作系统接口模块,提供了使用操作…

学生成绩管理系统(Java)

目录 ​编辑 需求分析: 登录界面(LoginPanel) 主界面(MainApp) 重写 1.班级重写(cs.practics.bean.BjBean.java) 2.课程重写(cs.practics.bean.CourseBean.java) 3.成绩重写(cs.practics.bean.MarkBean.java) 4.学生重写(cs.practics.bean.StudentBean.java…

Spring Cloud 容错机试 Hystrix 服务降级 RestTemplate:

Ribon的服务降级操作 雪崩效应: 如果短信服务炸了后面的所有服务就会起连锁反应造成全部服务挂掉,这就是雪崩效应,那么其实短信服务又不是我们主要业务,这个时候我们可以采用服务降级,服务降级就是暂时的把短信服务停…

springboot服务端接口公网远程调试 - 实现HTTP服务监听【端口映射】

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

安装CHATGPT保姆级教程(windows版)

ai包链接: 链接:https://pan.baidu.com/s/1tKuG4OfkewlDRU292vx8mw?pwdtw8t 提取码:tw8t 一、安装篇 安装python,使用软件包中的python安装程序安装后检查是否安装成功,cmd窗口运行命令: python –vers…

python自动化爬虫实战

python自动化爬虫实战 偶然的一次机会再次用到爬虫,借此机会记录一下爬虫的学习经历,方便后续复用。 需求:爬取网站数据并存入的csv文件中,总体分为两步 爬取网站数据存到到csv文件中 1、配置爬虫环境 1.1、下载自动化测试驱动 …

【2023最新】Python + Pycharm + Anaconda安装配置一条龙

【2023最新】Python Pycharm Anaconda安装配置一条龙 文章目录 【2023最新】Python Pycharm Anaconda安装配置一条龙1. Python1.1 Python下载1.2 Python安装1.3 测试 2. Pycharm2.1 Pycharm下载2.2 Pycharm安装配置2.3 你好Pycharm 3. Anaconda3.1 Anaconda下载3.2 Anacond…

【网络】TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连…

opencv4 傅里叶变换

傅里叶变换 ① 高频:变化剧烈的灰度分量,例如边界礁石。 ② 低频:变化缓慢的灰度分量,例如一片大海。 ③ 高通滤波器:只保留高频,会使得图像细节增强。高频边界锐化了,增强了,细节…

网瘾少年转行软件测试,月薪20k? 叛逆少年终归成长...

前言: 高中住校期间沉迷游戏(DNF),尤其是高三那年,晚上翻墙出去通宵,白天上课睡觉,高考自然是考了个稀碎,高考结束那个暑假刚开始觉得整个人都自由了,爸妈看我没考上大学,知道我心情…

Sql Server 自动备份

Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server,在管理下找到”维护计划”,右键点击”维护计划向导”,如图;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…

北邮22信通:二叉树显示路径的两种方法 递归函数保存现场返回现场的实例

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 获取更多文章 请访问专栏~ 北邮22信通_青山如墨雨如画的博客-CSDN博客 一.讲解 要想实现二叉树的路径显示,我们要按照…

每日一题——三数之和(双指针)

每日一题 三数之和 题目链接 思路 解析函数原型 首先我们来看一下题目给的函数原型: int** threeSum(int* nums, int numsSize, int* returnSize, int**returnColumnSizes)题目要求我们返回一个二维数组,数组的行数代表着存在多少个满足条件的三元组&…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图(3D) 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦,男,西安工程大学电子信…

Cuda | Cudnn安装及其配置

文章目录 👉引言💎一、Cuda安装1 选择Cuda版本2下载及运行安装程序3 测试 二、Cudnn安装1、进入官网下载对应cuda版本的cudnn2、下载好相应版本并进行解压安装3、解压完成后4、测试 👉引言💎 学习的最大理由是想摆脱平庸&#xf…

stable diffusion图片资源分享和模型推荐,好用的模型有哪些呢?

前言 这篇文章主要是分享我的图片和推荐一些好用的模型,模型不在多在于精,基于几个好的大模型适当下载一下LORA模型,就能画出非常好的图片,多话不说 图片分享 简单展示 详情请看:https://space.bilibili.com/109890…

Linux基础篇 Ubuntu 22.04的环境安装-02

目录 一、资料的获取 二、安装虚拟机 三、安装Ubuntu过程 四、注意事项 一、资料的获取 1.通过官方网站下载 Ubuntu系统下载 | Ubuntuhttps://cn.ubuntu.com/download2.下载桌面板即可 3.选择下载的版本 二、安装虚拟机 1.创建新的虚拟机 2.选择自定义安装 3.硬件兼容性选…

Es elasticsearch 十九 kibana 可视化配置图表 及功能 集群部署

目录 Es kibana 可视化 下载zip 解压 bin/kibana.bat 启动 管理索引管理 吧logstash 存进来的数据 按照 xxx-* 方式 保存索引模式 通过 discove 配置可视化界面 图表数据实时刷新 时序图配置 饼图配置 表格数据配置 添加仪表盘 图表样例 使用后模拟绘制方法好看些 …

pandas数据预处理

pandas数据预处理 pandas及其数据结构pandas简介Series数据结构及其创建DataFrame数据结构及其创建 利用pandas导入导出数据导入外部数据导入数据文件 导出外部数据导出数据文件 数据概览及预处理数据概览分析利用DataFrame的常用属性利用DataFrame的常用方法 数据清洗缺失值处…

什么是Odoo ERP:部署方式、业务集成、成本投入、发展与未来

ERP部署的类型 如何部署ERP 系统?通过多年的发展,ERP系统的部署方式更加多样化,包括公有云或私有云部署、本地部署或整合不同环境的混合部署场景,企业可根据自身条件与应用场景加以选择。下面介绍了每种部署模式的主要优势&#…