python异常
try:
xxx
except Exception:
xxx
此处Exception可不写,若填写则代表只有对应异常
try:
xxx
except Exception:
xxx
else:
xxx
若没有异常则执行else后面的语句
try:
xxx
except Exception1, Exception2:
xxx
else:
xxx
finally:
xxx
无论是否异常,都执行finally语句
Python2与Python3的部分异同
print
首先最简单的区别的必然是print语句,简单来说就是有无括号
unicode字符串
Python2中必须使用 u’unicode_str’来表示这是unicode字符串
Python3默认是unicode,所以可以直接时候输入’unicode_str’
<>
Python3不支持<>这个运算符,需使用!=
Python2则两者都支持
字典部分区别
has_key()
Python2使用dict.has_key(“xx”),来检测字典中是否包含xx
Python3不支持此方法,使用 “xx” in dict 即可
keys()、items()
Python2使用此方法默认返回值为列表
Python3必须使用list方法进行转换
调用部分模块的区别
urllib、urllib2
Python2 直接调用两者即可
Python3 合并了urllib2,综合到了urllib中
commands –> subprocess
filter()
Python2 采用了filter(xxx) 返回列表
Python3 要使用list方法,才能使filter返回列表
map()
Python2 返回列表
Python3 返回迭代器
reduce()
Python2 直接使用
Python3 需要引入from functools import reduce
try…except
Python2 使用except someError, e
Python3 使用except someError as e:
raise
Python2 使用raise xxx, ‘some msg’
Python3 使用raise xxx(‘some msg’)
xrange()
Python2 使用xrange(10)
Python3 使用range(10)
raw_input()
Python2 使用raw_input()
Python3 使用input(),Python2的input()转为eval(input())
lambda()
Python2 使用lambda (x, (y, z)): x + y + z
Python3 使用lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]
zip()
Python2 使用zip(a, b, c)即可返回一个元组组成的列表
Python3 要使用list(zip(a, b, c))才能返回列表,否则返回迭代器
对元组列表解析
Python2 [i for i in 1, 2]
Python3 [i for i in (1, 2)]
编码问题
编码问题可能由于各种各样的原因导致。我认为最大的一个坑是系统不同导致编码问题。Windows10系统下和Linux系统默认的编码问题,会导致python使用的解码不同,所以可能会乱码。所以这个时候我们需要更改默认编码。
# python3.6
# 网易云爬取的最佳解决方案,系统为windows10
# 只需要在代码前面使用这三行代码即可
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
# 当然也不是所有情况都这么坑,所以还有其他几种方案可供选择
# 使用decode解码
str.decode("unicode-escape")
# 或者decode,使用str编码的方式来解码
# 还可以使用,有的时候不一定是utf8
str.decode("utf8", "ignore")
# 有时候是
str.decode("utf8", "replace")
pypy编译加速器
pypy是一个编译器加速器,可以大大提升需要运行很久的python脚本的运行速度,加速了当前脚本的运算速度,并不增加调包速度
使用前提条件:
更适用于单个脚本的使用,
# Ubuntu下的安装
>>>sudo add-apt-repository ppa:pypy/ppa
>>>sudo apt-get update
>>>sudo apt-get install pypy pypy-dev
# 使用
>>>pypy xx.py
# 或者直接在pycharm里设置编辑器
# ubuntu下安装在/usr/bin/pypy
Ubuntu16.04下将Python3设置为默认
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
# 切换回Python2
sudo update-alternatives --config python