python3基础1--简介-发展-安装-程序实例

一、python简介

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

1.1  目前Python主要应用领域:

云计算: 云计算最火的语言, 典型应用OpenStack
WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣 典型WEB框架有Django
科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系统运维: 运维人员必备语言
金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
图形GUI: PyQT, WxPython,TkInter

1.2 Python 是一门什么样的语言?
编程语言主要从以下几个角度为进行分类
(编译型和解释型、动态语言和静态语言、强类型语言和弱类型语言、)

1.2.1 低级语言与高级语言
低级语言:
 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从高中物理做的纸带打孔实验来看,输入即可执行得到结果。
 后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。
 无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,交叉汇编技术。

高级语言:(高度抽象化,依赖编译器)
       从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。
 高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。


2.1.1 编译型和解释型
编译型:编译型是把源程序的每一条语句都(编译)成机器语言,并保存成(二进制文件),这样运行时计算机可以直接以机器语言来运行此程序,速度很快。
优点:编译速度快,只做一次编译,通常可以脱离语言环境运行,可以用来开发,操作系统和数据库以及大型应用程序等。
缺点:源码改动,需要整个模块,根据不同的机器语言环境,根据特定的操作系统架构位数进行重新编译,编译时间比较长,可移植性,灵活性比较差。

解释型:解释型是在源程序执行的过程中,解释一条,解释成机器语言在执行一条,执行速度不如编译型语言执行的快。
优点:源码改动,重新解释,不依赖于特定的操作系统平台,前提条件是需要安装解释器(虚拟机),不需要停机,重新部署,直接更改源码,灵活性,可移植行好。
缺点:程序运行速度慢(相对于计算机来说慢,对于人看到的来说通常感觉不到很慢),因为是解释一条,执行一条这样的模式,所以在性能上是不如编译型语言的。

2.1.2 动态语言和静态语言
动态语言:不需要预先定义变量(开辟内存地址,存储在内存中的)的数据类型。
典型代表编程语言有:python、JS、ruby、PHP等等。

静态语言:不需要预先定义变量(开辟内存地址,存储在内存中的)的数据类型。
典型代表编程语言有:C、C++、GO等等。

2.1.3 强类型和弱类型
强类型:通常定义的变量数据类型确定好之后,程序在执行过程中是不会更改的,是那种类型就按那种类型处理,如果需要更改定义的数据类型,则需要对定义的变量就行数据类型转化。例如(str to int)  int(字符串变量),安全性比较高。
典型代表编程语言有:python、ruby等

弱类型:与强类型定义相反,程序在运行过程中,可以随意对这个定义的变量进行重新赋值等操作。 安全性比较差
典型代表编程语言有:JAVA等

小结:
通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。

1.3 Python 优缺点?
1.3.1 优点:
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,避免重复造轮子。

高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。

可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

缺点:
速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些。

代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的。

线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

1.4 python 解释器
1.4.1  CPython
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

1.4.2  IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

1.4.3  PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

小结:
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

二、python发展史

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。
1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - 2016-12-23
Python 3.6.4 - 2017-12-19

三、python 2 和 3 的区别

3.1  python 2 和python3的详细区别之:输入与输出
python 2 输出输入:print ""、raw_input(默认接收都作为字符串类型)和input(输入什么类型就是什么类型)
python3 输出输入:print ("")、input(默认接收都作为字符串类型处理),Python移除了raw_input输入类型。

3.2  python 2 和python3的详细区别之:字符编码
python2 默认字符编码是ascill码      
python3 默认字符编码是unicode编码--utf-8
小结:python2中如果要输入中文则必须知道字符编码为utf-8,python3则直接支持中文输入了。

3.3  python3的一些基础库,库包名改变了。

3.4  python2 和python的详细区别之:字符流和bytes流
python2 变量在网络,视频等传输过程中允许字符流和bytes流的包传递。
python3 则默认都是只允许bytes流作为通讯流的包传递。

3.5 python 2 和python3的详细区别之:字符串和字节
python2 中 字符串和字节类型没有什么明显的区别以及,即:字符串与字节傻傻分不清。
python3 中,字符串与字节是做了明显的区别的,文本可以由字符串流和字节流存储,但是视频图片等都只允许字节流存储, 文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示,Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。


四、Python 安装

4.1 windows平台安装python3
4.1.1 下载安装包
https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64.exe 

4.1.2 安装
默认安装路径:C:\python3.6.4

4.1.3 配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】

4.2 linux平台安装python3 
4.2.1 下载python3 的tar.gz rpm 源码包或者二进制安装包
Linux 下默认是已经安装了python2.x版本的。
https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
安装方式就不做说明了,可自行百度。


五、Python 程序实例---Hello World

在linux 下创建一个文件叫hello.py,并输入
print("Hello World!")
然后执行命令:python hello.py ,输出

localhost:~ python$ vim hello.py
localhost:~ python$ python hello.py
Hello World!


指定解释器

上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python

print "hello,world"
如此一来,执行: ./hello.py 即可。
ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

在交互器中执行 

除了把程序写在文件里,还可以直接调用python自带的交互器运行代码, 
localhost:~ python$ python
>>> print("Hello World!")
Hello World!






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值