CentOS 6 安装 python2.7

CentOS 6 预装的python版本是2.6,由于python2.6不支持ipython等一系列库,所以需要安装python2.7,python3如果有需要安装方法应该类似。

安装python2.7不建议直接覆盖python2.6,因为yum本身是需要Python2.6的支持,有见过直接覆盖后yum就失效的情况。因此使用python2.7我们采用virtualenv的方法,不会影响原生的2.6版本。

安装参考 CENTOS 6.5 安装 Python 2.7 总结,总共分为3部分:

1.安装python2.7

2.安装2.7对应的easy_install 和 pip

3.安装virtualenv

安装过程中会需要用到zlib和openssl,需要在安装python2.7前就安装好。因此步骤大致如下:

预安装:

yum install zlib-devel

yum install openssl-devel

1.

wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
tar xf Python-2.7.8.tgz
cd Python-2.7.8
./configure –prefix=/usr/local
make && make install

2.

# First get the setup script for Setuptools:
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py

# Then install it for Python 2.7 :
python2.7 ez_setup.py

# Now install pip using the newly installed setuptools:
easy_install-2.7 pip

3.

# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7 install virtualenv
virtualenv-2.7 my27project

# Check the system Python interpreter version:
python –version
# This will show Python 2.6.6

# Activate the my27project sandbox and check the version of the default Python interpreter in it:
source my27project/bin/activate
python –version
# This will show Python 2.7.X

之后每次使用python2.7只需要source一下active文件就可以了

参考:

CENTOS 6.5 安装 Python 2.7 总结

 

yield的用法

python中,正常的函数通常是在一个函数中进行操作,最后return,将控制权交给调用函数的地方。

yield和正常理解的函数执行不同,yield在函数中与return起到的作用类似却又不同。yield从函数中返回一个值,但控制权并未完全交出,而是在保存当前所有变量的情况下暂时地将控制权交给外面,当外面的函数继续进行迭代时,控制权又回到yield处,执行下一行代码。

由此可以看到yield存在的函数实际返回了一个GeneratorType,通过不断地迭代,调用外部的函数来处理yield还回去的结果。

实例代码如下:

1
2
3
4
5
6
7
def x():
    for i in xrange(5):
        yield i
        print 'i value ', i

for k in x():
    print 'k value ', k

代码输出结果:

k value 0
i value 0
k value 1
i value 1
k value 2
i value 2
k value 3
i value 3
k value 4
i value 4