【Python】学习笔记
Python是一种多用途的语言,可以定义为面向对象的脚本语言。与其他的面向对象的语言相比,Python的可读性很好,格式简单明了,代码移植性强,有强大的标准库支撑(Numpy,nltk……数学功能极其强大)并且可以用来集成各种编程语言书写的代码。所以越来越多的人选择了Python。
Python安装
windows下面可以去python的官网下载,安装后修改环境变量就可以使用了。
Ubuntu可以用下面的命令:
sudo apt-get install python
自动安装的是Python2.7版本的,Python3和Python2区别略大,我两个都装了,可以用pip+virtualenv来进行python的版本区分。具体可以参见:
Python的IDE是IDLE,现在最高好像只有Python2.7版本的。IDE作用不大,就是给个界面。如果习惯了使用IDE的童鞋可以安装试试。
Python运行
Python安装到机器上后,包含的是一些最小化的组件:一个解释器和支持的库。解释器是能够执行用其他计算机语言编写的程序的系统软件,属于一种翻译程序。Python解释器先读取程序,并按照其中的命令执行,得出结果。
一个Python程序运行步骤如下:
源代码(**.py) => 字节码(**.pyc) => PVM
首先是你写的源码,一般是以.py作为文件类型,然后根据在Python内部将这些源代码逐条翻译成字节码的指令。使用字节码可以节省运行的时间开销。你在你运行过的python文件的同级目录下可以看到这些.pyc的字节码文件。字节码之后被发送到Python虚拟机(Python Virtual Machine, PVM)上执行。
P.S. Python的字节码是Python自己的定义,而非汇编指令之类的。
下面是有关Python运行的一些总结
1. 搜索路径
在Python中搜索路径有点像C++的项目路径的感觉,Python中的sys.path便是搜索的总的路径集,你需要用到的文件都应该在这个路径里可以找到。
-- 添加默认搜索路径:可以暂时加入路径也可以永久加入。
暂时加入路径可以在每次代码上添加:
import sys sys.path.append(’D:/WorkSpaces/Python/Test’)
永久加入有两种方法,
方法一:将这个路径添加到site-packages这个文件夹下面,在我的Python里是在lib下面的。
在site-package这个文件夹里新建一个.pth的文件,文件里写你需要永久添加的路径。这种方法不好的地方在于如果有几个版本的Python就不可以通用了。
# .pth file for test this method D:\WorkSpaces\Python\Test
方法二:在环境变量中添加PYTHONPATH,如果还没有这个变量可以新建一个,然后填上你需要加入的路径即可。
-- 包导入
一个工程中往往一个文件夹下有多个子文件夹,如果要将所有的子文件夹都加入未免太麻烦了。在Python中提供了一种模拟Java中包的概念的方法。在Python中称为包导入。
包导入语句的路径内的每个目录都必须有__init__.py这样一个文件,否则导入包会失败。__init__.py文件里未必需要内容可以直接为空,当然你也可以写一些东西。当Python首次导入某个目录时会自动执行该目录下的__init__.py文件中的所有程序代码,你可以使用该文件创建你所需要的数据文件,做数据库的连接等初始化的步骤。
在对一个目录进行包导入后,你就可以用类似java中包的方法来使用包中的文件,如
import dir1.dir2.Test.py
2. 运行程序
运行程序可以直接使用python的命令,当然你需要将Python的路径添加到:
python Test.py
Python语法粗概
看的是Mark Lutz的Python学习手册,很多细节,粗粗的概括一下几个与传统的面向对象语言差别比较大的地方。
1. 缩进: 在C++或者Java中,缩进、空格多几个都是无所谓的,只要自己看着舒服,缩几个都行。但是在Python中为了让代码一眼看上去的是怎么样就是怎么样,避免读代码时候的错误,缩进就代表着代码块的范围而不需要括号来进行划分,使得代码变得更加的简洁且一目了然。譬如下面注明的if例子:
if(x) if(y) statement1; else statement2;
在Java里这个else肯定是和内层的if(y)配套的,而在Python里适合外层的if(x)相配套的。这样是否更加的直观清晰?个人比较喜欢Python这个设计。