Python 的起源:
Python 的创始人为吉多·范罗苏姆(Guido van Rossum)
1. 1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的**解释程序**,
作为 ABC 语言的一种继承
2. ABC 是由吉多参加设计的一种教学语言,就吉多本人看来,ABC 这种语言非常优美和强大,
是专门为非专业程序员设计的。但是 ABC 语言并没有成功,究其原因,吉多认为是非开放造成的。
吉多决心在 Python 中避免这一错误,并获取了非常好的效果
3. 之所以选中 Python(蟒蛇) 作为程序的名字,
是因为他是 BBC 电视剧——蒙提·派森的飞行马戏团的爱好者
4. 1991 年,第一个 Python **解释器** 诞生,它是用 C 语言实现的,
并能够调用 C 语言的库文件
解释器:
**计算机不能直接理解任何除机器语言以外的语言**,
所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。
**将其他语言翻译成机器语言的工具,被称为编译器**
编译器翻译的方式有两种:
一个是**编译**,另外一个是**解释**。
两种方式之间的区别在于**翻译时间点的不同**。
当编译器**以解释方式运行的时候**,也称之为**解释器**
* **编译型语言**:
程序在执行之前需要一个专门的编译过程,把程序一次性编译成为机器语言的文件,
运行时不需要重新翻译,直接使用编译的结果就行了。
程序执行效率高,依赖编译器,跨平台性差些。如 C、C++
* **解释型语言**:
解释型语言编写的程序不进行预先编译,以文本方式存储程序代码,
会将代码翻译一行解释一行。在发布程序时,看起来省了道编译工序,
但是在运行程序的时候,必须先解释再运行(解释一行执行一行)
#### 编译型语言和解释型语言对比
* **速度** —— 编译型语言比解释型语言执行速度快
* **跨平台性** —— 解释型语言比编译型语言跨平台性好
■Python解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。
要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,
任何人都可以编写Python解释器来执行Python代码(当然难度很大)。
事实上,确实存在多种Python解释器。
CPython
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方
版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。
在命令行下运行python就是启动CPython解释器。
Python是使用最广的Python解释器。我们学习的所有代码也都在CPython下执行。
IPython(table补全)
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互
方式上有所增强,但是执行IPython代码的功能和CPython是完全一样的。
好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python
代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,
这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。
如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python
解释器,可以直接把Python代码编译成.Net的字节码。
小结
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,
最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
■Python 特点
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:Python提供所有主要的商业数据库的接口。
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
执行python程序的三种方式
1)解释器 --python/python3 [python hello.py]
2)交互式 --ipython [python的shell中输入执行]
3)集成开发环境 --pyCharm
安装python2.7 python3.6
我们需要将python路径加入path中。
右键单击 【计算机】,选择菜单属性命令,在弹出的对话框中选择 【高级系统设置】 标签,选择 高级 标签,
然后点击 环境变量 按钮。选中【系统变量】中的“path”选项,单击【编辑】按钮,将弹出如下图所示的对话框。
在【变量值】文本框中的末尾添加“;D:\Python27”(这里是你的安装路径),单击【确定】按钮。
D:\Python27
D:\Programs\Python\Python36-32
cmd运行--》python所见即所得
python 2.7 版本下运行python程序
——————————————————————
第一个python程序 D:helloword.py
如下注释用于指定解释器
#! /usr/bin/python
print "hello python!!!"
-->cmd python是解释型语言,直接通过解释器执行
D:\>python helloword.py
■可移植特点:linux下运行windows下的py程序
[hyxy@master Desktop]$ cd /mnt/hgfs/工具/
[hyxy@master 工具]$ cp helloword.py ~/tmp/
[hyxy@master tmp]$ cd ~/tmp/
[hyxy@master tmp]$ ls
dfs hadoop-hyxy-jornalnode.pid helloword.py hive nm-local-dir zookeeper
[hyxy@master tmp]$ python helloword.py
hello word!!
注释
1 无论是行注释还是段注释,均以#加一个空格来注释。
#我是单行注释
"""我是多行注释,可以写很多很多行的功能说明
哈哈哈。。。
"""
2 Python 中文编码
前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,
但是如果你输出中文字符"你好,世界"就有可能会碰到中文编码问题。
【Python2.X 解释器不支持中文 python3支持】
#!/usr/bin/python
print "你好,世界";
以上程序执行输出结果为:
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8
注意:#coding=utf-8 的 = 号两边不要空格。
实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "你好,世界";
注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte
将【#!/usr/bin/python # -*- coding: UTF-8 -*- 设置到pycharm中】
#!/usr/bin/python liunx下python安装路径
# -*- coding: UTF-8 -*-