/bin/python3
修改yum配置
vim /usr/bin/yum,在第一行后面的python后加上2
vim /usr/libexec/urlgrabber-ext-down,同上
5.虚拟环境搭建
什么是python虚拟环境?
通俗的来讲,虚拟环境就是从电脑独立开辟出来的环境,相当于一个副本或备份,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器。
为什么要用虚拟环境?
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如以下场景:
场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要来回的卸载安装了,这样很容易就给你的项目带来莫名的错误;
场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,想想就应该知道,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。
windows下安装
运行cmd,输入pip install virtualenv。如果版本环境出现问题,尝试输入python -m pip install --upgrade pip。出现successful,表示成功。
新建虚拟环境
virtualenv scrapytest (没有报错,显示done成功,然后在c盘对应的文件下查看是否创建成功)
virtualenv -p C:……(此处为安装python的位置,包含其启动执行文件) scrapytest(此为刚创建的虚拟环境的名字)
运行为:cd 进入到之前创建的虚拟环境的目录下activate.bat,结束为deactivate.bat
linux安装
yum install python-virtualenv
virtualenv py2
virtualenv -p /usr/local/bin/python3 py3
cd 进入创建的py2
source activate
deactivate
6.基本语法
控制语句
if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
for语句,遍历列表、字符串、字典、集合等
迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
def语句,用于定义函数和类型的方法。
pass语句,表示此行为空,不运行任何操作。
assert语句,用于程序调试阶段时测试运行条件是否满足。
with语句,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句,制造一个错误。
import语句,导入一个模块或包。
from import语句,从包导入模块或从模块导入某个对象。
import as语句,将导入的对象赋值给一个变量。
in语句,判断一个对象是否在一个字符串/列表/元组里。
表达式
主要的算术运算符与C/
C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取余。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。
模块
概念
python中的模块是什么?简而言之,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块可以被项目中的其他模块、一些脚本甚至是交互式的解析器所使用,它可以被其他程序引用,从而使用该模块里的函数等功能,使用Python中的标准库也是采用这种方法。
分类
在Python中模块分为以下几种:
系统内置模块,例如:sys、time、json模块等等;
自定义模块,自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。注意:自定义模块的命名一定不能和系统内置的模块重名了,否则将不能再导入系统的内置模块了。例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;
第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;
执行过程
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。基于C的Python编译出的字节码文件,通常是.pyc格式。除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。
编译与解释的关系
首先,我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。