python初级技能树1学习笔记

声明:以下内容大部分是大佬自己写的学习资料,仅供学习使用,掺杂了一些个人学习中的想法,大佬博客地址在最后

1 Python定义

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

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

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

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

2 Python发展史

 10年前火了一阵,20年的发展史,30年前创立

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

 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");

3 Python编译和运行过程

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也用到了虚拟机 

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

## 虽然这样说,但是注意“基本”二字,
参考如下
https://blog.csdn.net/weixin_39929259/article/details/110078017?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165556222216780357218217%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165556222216780357218217&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-110078017-null-null.142^v17^pc_search_result_control_group,157^v15^new_3&utm_term=java和python强弱&spm=1018.2226.3001.4187icon-default.png?t=M5H6https://blog.csdn.net/weixin_39929259/article/details/110078017?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165556222216780357218217%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165556222216780357218217&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-110078017-null-null.142^v17^pc_search_result_control_group,157^v15^new_3&utm_term=java%E5%92%8Cpython%E5%BC%BA%E5%BC%B1&spm=1018.2226.3001.4187
通过以上编译和运行过程可分析:Python是一种解释型语言,指的是解释Python字节码,而不是Python源代码。这种机制的基本思想与Java和.NET是一致的。


 3.1 Python解释器


直接是cpu,而不是缓存,值得思考一下,
同样作为计算力,cpu显然性价比更高
Python解释器(Interpreter)是把Python语言翻译成计算机 CPU 能听懂的机器指令。
首先可以在命令提示行输入**python --version**来查看python的版本:
然后在命令提示符中输入"Python"命令来启动Python解释器:
$ python
这是说python的底层逻辑可能是最古老的c,我很多语言都是多少基于c写成的,因语言的编译运行要求,python获得了解释特性(代码少)的同时,及其需要c的执行速度来弥补,因此虚拟机可能和c有关系
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文件,一般可能的情况如下:


执行 python test.py 会对test.py进行编译成字节码并解释执行,但不会生成test.pyc。
如果test.py中加载了其他模块,如import urllib2,那么python会对urllib2.py进行编译成字节码,生成urllib2.pyc,然后对字节码解释执行。
如果想生成test.pyc,可以使用python内置模块py_compile来编译,也可以执行命令

**python -m py_compile test.py **

这样,就生成了test.pyc。
加载模块时,如果同时存在.py和.pyc,python会使用.pyc运行,如果.pyc的编译时间早于.py的时间,则重新编译 .py文件,并更新.pyc文件。

 

4 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框架)。

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 可脚本化)
稳定成熟
用户社区规模大

https://blog.csdn.net/ywsydwsbn/category_10720687.html?spm=1001.2014.3001.5482

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白村第一深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值