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
print

关于数字

# <> 运算符在三中被弃用, 比较大多用于数字, 所以就放在这里

# python3中range生成一个数字的生成器, 而在2中直接生成列表. 2中有xrange生成生成器

# 3中弃用了long长整型

# 2中/是整除, 3中则不是, 3中的整除是//

  

Python2.7与3.6的一些区别的更多相关文章

  1. python2.* 版本 与 3.* 版本中的区别

    目录 Unicode编码 print函数 raw_input() 和 input( ) 不等运算符 数据类型 除法 map 和 filter Unicode编码 python2.x 解释器默认编码格式 ...

  2. 版本python2和版本3.X的一个区别之一

    print函数 虽然print语法是Python 3中一个很小的改动,且应该已经广为人知,但依然值得提一下:Python 2中的print语句被Python 3中的print()函数取代,这意味着在P ...

  3. Python2和Python3关于reload()用法的区别

    Python2 中可以直接使用reload(module)重载模块. Pyhton3中需要使用如下两种方式: 方式(1) >>> from imp >>> imp. ...

  4. python2与python3的input函数的区别

    Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型. Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获 ...

  5. python2与3实际中遇到的区别

    1.type(1/2) python2是向下取整,0,为int:python3是正常除法,0.5,为float 2.

  6. python2和python3中TestSuite().addTest的区别

    Python2中unittest.TestSuite().addTest()的参数是这样的:unittest.TestSuite().addTest(TestFun("test_nam&qu ...

  7. __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响

    python2.x中的新类型类(New-style class)与python3.x的类一致,均继承object类,而不继承object的类称为经典类(classic class),而对于这两种类,一 ...

  8. python2.X和3.X的一些区别【整理中】

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可  以取得很好的优化结果.  Py3.1性能比P ...

  9. urllib库在python2和python3环境下的使用区别

    好东西啊!!! Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve() urllib.urlclea ...

随机推荐

  1. 02-Django框架介绍

    02-Django框架介绍 1.MVC框架介绍 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式 具有耦合性低.重用性高.生 ...

  2. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  3. 初探kafka streams

    1.启动zookeeper zkServer.cmd 2.启动kafka kafka-server-start.bat d:\soft\tool\Kafka\kafka_2.12-2.1.0\conf ...

  4. tensorflow-mnist报错[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法

    问题原因: tensorflow提供了tensorflow.exapmles.tutorials.mnist.input_data模块下载mnist数据集.代码如下 如果path路径底下没有mnist ...

  5. oracle篇 之 排序、限制查询行

    第二章:排序.限制查询行 一.order by子句 1.order by排序规则 (1)asc,升序排列,默认取值 (2)desc,降序排列 (3)order by是select命令的最后一个子句 s ...

  6. abp添加动态菜单

    abp中MenuDefinition封装了导航栏上的主菜单的属性,MenuItemDefinition则封装了子菜单的属性,子菜单可以引用其他子菜单构成一个菜单树. MenuDefinitio成员如下 ...

  7. 【题解】Hanoi塔问题

    题目描述 有三根柱A,B,C.在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面.并依次编好序号,现要将A上的N块片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面 ...

  8. (十五)qt-tcp

    基本流程 QT += core gui network #include "tcp.h" #include "ui_tcp.h" #include <QD ...

  9. cocos2d中个类之间的关系

    1.Director类: (1)单例类Director::getInstance()  ,获取导演类对象 (2)设置游戏配置(OpenGL),推动游戏发展 runWithSence.replaceSe ...

  10. Neo4j安装

    一.Windows版本 1)下载java8,并配置环境变量 java下载请点击,提取码:f6ci 2)Neo4j下载 选windows版本 新建系统环境变量: 并配置Path环境变量,添加bin所在目 ...