Python2.7与3.6的一些区别
2.7实现了一部分3的功能, 更早版本可能会稍稍涉及一点
首先是关键字的差别
python3.6
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass',
'raise', 'return', 'try', 'while', 'with', 'yield']
python2.7
import keyword
keyword.kwlist
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while',
'with', 'yield']
python2.4
['and', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is','lambda', 'not',
'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'yield']
这么多看不过来了把, 哈哈
python36 = {'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def',
'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import',
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while',
'with', 'yield'}
python27 = {'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'exec', 'finally', 'for','from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or',
'pass', 'print', 'raise', 'return', 'try', 'while','with', 'yield'}
python24={'and', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is','lambda', 'not',
'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'yield'}
print(python36-python27) # {'nonlocal', 'False', 'True', 'None'}
print(python36-python24) # {'False', 'nonlocal', 'None', 'as', 'with', 'True'}
最主要的就是这个nonlocal了, python2中存在False, True, None但是不属于关键字
语法差异
异常:
# python3
try:
raise IndexError("傻傻")
except IndexError as e:
print(e) # python2
try:
raise IndexError("傻傻")
except IndexError , e:
print(e)
其他
yield from # 好像是3.4
async和await # 3.5
数据类型
在python3中str是Unicode编码的字节, bytes是其他字节
在python2中str默认是ascii编码的字节, Unicode是另一种类型
# 在pycharm中点击bytes
bytes = str
bytes: 就是八个二进制的字节, 我们存储和在网络传输中实际上都是字节
Unicode, GBK, ASCII, UTF8都是将字节翻译成有用的信息, Unicode可以存储所有文字, 可以用他来做一个中间编码来转换其他的编码
python3
# 转成字节
a = "爸爸"
byte = a.encode("utf8")
print(byte, type(byte)) byte = bytes(a, encoding="utf8")
print(byte, type(byte)) # 转成字符串
st = byte.decode("utf8")
print(st, type(st)) st = str(byte, encoding="utf8")
print(st, type(st))
python2
# _*_ coding:utf8 _*_ # 转成Unicode, 这里用utf8转是因为上面写的
nui = "我是你爸爸".decode("utf8")
print nui, type(nui) # 转成字符串
st = nui.encode("utf8")
print st, type(st)
其他
输入
# python3
input() -> str # python2
raw_input() -> str
python2中也有input不过他只能接收数字
输出
# python3
print() # python2
关于数字
# <> 运算符在三中被弃用, 比较大多用于数字, 所以就放在这里 # python3中range生成一个数字的生成器, 而在2中直接生成列表. 2中有xrange生成生成器 # 3中弃用了long长整型 # 2中/是整除, 3中则不是, 3中的整除是//
Python2.7与3.6的一些区别的更多相关文章
- python2.* 版本 与 3.* 版本中的区别
目录 Unicode编码 print函数 raw_input() 和 input( ) 不等运算符 数据类型 除法 map 和 filter Unicode编码 python2.x 解释器默认编码格式 ...
- 版本python2和版本3.X的一个区别之一
print函数 虽然print语法是Python 3中一个很小的改动,且应该已经广为人知,但依然值得提一下:Python 2中的print语句被Python 3中的print()函数取代,这意味着在P ...
- Python2和Python3关于reload()用法的区别
Python2 中可以直接使用reload(module)重载模块. Pyhton3中需要使用如下两种方式: 方式(1) >>> from imp >>> imp. ...
- python2与python3的input函数的区别
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型. Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获 ...
- python2与3实际中遇到的区别
1.type(1/2) python2是向下取整,0,为int:python3是正常除法,0.5,为float 2.
- python2和python3中TestSuite().addTest的区别
Python2中unittest.TestSuite().addTest()的参数是这样的:unittest.TestSuite().addTest(TestFun("test_nam&qu ...
- __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
python2.x中的新类型类(New-style class)与python3.x的类一致,均继承object类,而不继承object的类称为经典类(classic class),而对于这两种类,一 ...
- python2.X和3.X的一些区别【整理中】
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比P ...
- urllib库在python2和python3环境下的使用区别
好东西啊!!! Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve() urllib.urlclea ...
随机推荐
- Aninteresting game HDU - 5975 (数学+lowbit)
Let’s play a game.We add numbers 1,2...n in increasing order from 1 and put them into some sets. Whe ...
- SQL操作符、通配符等
一.通配符 常用模糊查询:% SELECT * FROM TB_Name WHERE FIELD LIKE pattern SELECT * FROM Persons WHERE name LIK ...
- 前端之DOM操作
一.概念 javascript javascript是一种脚本语言,可以被浏览器解析,所以它可以称之为前端的三把利器之一. javascript跟java没有半毛钱关系. 声明局部变量:使用关键字va ...
- Net包管理NuGet(3)搭建私服及引用私服的包
1,打开vs创建项目(ASP.NET WEB空项目)假设命名为MyNuGet 空项目解决方案如图 2,右键引用>管理NuGet程序包>切到浏览搜索NuGet.Server然后安装(3.1. ...
- Laravel数据库迁移
Laravel的数据迁移功能很好用,并且可以带来一系列好处.通过几条简单的 artisan 命令,就可以顺利上手,没有复杂的地方 注意:该系列命令对数据库非常危险,请准备一个单独的数据库作为配套练习, ...
- 【pytorch】pytorch-backward()的理解
pytorch-backword函数的理解 函数:\(tensor.backward(params)\) 这个params的维度一定要和tensor的一致,因为tensor如果是一个向量y = [y1 ...
- rpm打包要点
1. 查看变量: rpmbuild --showrc 2. spec文件 头部 多行的部分,如 %changelog 或 %description 由指令下一行开始,空行结束.一些不需要的行 (如 B ...
- js slice 假分页
语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 ...
- Luogu4495 [HAOI2018] 奇怪的背包 【扩展欧几里得算法】
题目分析: 首先打个暴力求一下$10^9$以内因子最多的数的因子个数,发现只有$1344$个. 由于有$ax+by=k*(a,b)$和2017年noip的结论,所以我们可以发现对于任意多个数$a_1, ...
- Scrapy 框架简介
Scrapy 框架 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的 ...