搭建python环境
Linux 环境
- 大多数都默认安装了python环境
- 命令行输入python可以启动python交互模式
- 推荐使用vim编辑
Windows环境
- 可以下载python 安装包(msi包)直接安装
- 自带python的GUI开发环境
- 开发工具很多
Linux 环境下举例
其实本人用的是mac系统,其实也是基于unix的,所以和linux差别不大吧
这是python的交互模式
~ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+2
3
>>> exit()
~
python的文本模式
(命令行的内容)
/projects/python vim 1.py
~/projects/python python 1.py
hello world
~/projects/python
(1.py的内容,不太规范,下面补充)
print "hello world"
通常情况下我们可以使用python的交互模式看看python的效果。然后可以使用文本模式将python写的程序进行记录。
python文件类型
源代码
- 源代码文件以“.py”为扩展名,由python程序解释,不需要编译
其实上面的例子不太规范,规范的如下:
1 #!/usr/bin/python
2 print "hello world"
这时候,我们给与这个文件可执行的权限,就可以直接执行了
~/projects/python vim 1.py
~/projects/python ll
total 40
-rw-r--r-- 1 chenwen staff 38B 7 28 15:39 1.py
~/projects/python chmod +x 1.py
~/projects/python ll
total 40
-rwxr-xr-x 1 chenwen staff 38B 7 28 15:39 1.py
~/projects/python ./1.py
hello world
字节代码
pyc 是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python 的虚 拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。
- 编译方法:
可以在需要被编译的程序目录下编写一个新的python程序:
1 import py_compile
2 py_compile.compile("1.py")
然后运行这个python程序,就可以产生1.pyc
这个1.pyc可以直接运行
但是要通过python 1.pyc才可以
具体为什么不可以在修改执行权限后./1.pyc 运行,因为这是二进制文件,不能直接执行。我感觉,是因为直接执行的时候,找不到解释器,因为解释器是在第一行指定的。
- 编译生成pyc:
单个文件
import py_compile
py_compile.compile(r'H:/game/test.py')
多个文件
import compileall
compileall.compile_dir(r'D:\test')
直接通过命令来运行,可以看到下面的命令中并没有用到compile()函数, 这是因为py_compile模块的main()函数中调用了compile().
python -m py_compile test.py
python -O -m py_compile test.py
-O 优化成字节码
-m 表示把后面的模块当成脚本运行
-OO 表示优化的同时删除文档字符串
如果你想看compile(), compile_dir(), compile_path()具体每个参数是干吗用的,可以使用print py_compile.compile().doc来查看,或者直接打开py_compile.py,compileall.py文件来看。
- 运行Pyc
Python test.pyc
优化代码
经过优化的源文件,扩展名“.pyo”,通过以下生成
python -O -m py_compile xxxx.py
python中pyc和pyo的作用
pyc文件,是python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机器码运行(这也是为什么pyc文件可以跨平台部署,类似于java的跨平台,java中JVM运行的字节码文件)。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。
pyo文件,是python编译优化后的字节码文件。pyo文件在大小上,一般小于等于pyc文件。如果想得到某个py文件的pyo文件,可以这样:
python -O -m py_compile xxxx.py
python文档是这样描述的:这个优化没有多大作用,只是移除了断言。
至于速度,运行几乎一样,加载pyc和pyo稍占优势。