python2和python3的区别

区别:

  • print函数
  • 整数相除
  • Unicode
  • 异常处理
  • xrange
  • map函数
  • 不支持has_key

print函数:

Python 2:  print是语句(statement)

print "Hello World!"

# 结果:Hello World!

Python 3:  print是函数

print('Hello World!')

# 结果:Hello World!

print 'Hello World'

# 结果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

整数相除:

Python 2:  3/2的结果是整数

print 3 / 2

# 结果:1

print 3 / 2.0

# 结果:1.5

Python 3:  3/2的结果是浮点数

print(3 / 2)

# 结果:1.5

print(3 / 2.0)

# 结果:1.5

Unicode:

Python 2:  有两种字符串类型:str和unicode

a = '您好'
print a # 结果:SyntaxError: Non-ASCII character '\xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details # 在Python 2中,如果代码中包含非英文字符,需要在代码文件的最开始声明编码
# _*_ coding:utf-8 _*_ a = '您好'
print a # 结果:您好

Python 3:  字符串默认就是Unicode

a = '您好'
print(a) # 结果:您好

Python 3中的str相当于Python 2中的unicode

异常处理:

Python 2:

try:
result = 1 / 0
print result
except ZeroDivisionError, e:
print str(e) # 结果:integer division or modulo by zero

try:
result = 1 / 0
print result
except ZeroDivisionError as e:
print str(e) # 结果:integer division or modulo by zero

Python 3:  只支持as关键字

try:
result = 1 / 0
print(result)
except ZeroDivisionError as e:
print(str(e)) # 结果:division by zero

xrange:

Python 2:  有 range 和 xrange 两个方法

区别:

  • range返回一个list,在被调用的时候即返回整个序列
  • xrange返回一个iterator,在每次循环中生成序列的下一个数字
# range
print range(4) # 结果:[0, 1, 2, 3] # xrange
print xrange(4) # 结果:xrang(4)

Python 3:  不再支持 xrange 方法

print(range(4))

# 结果:range(0, 4)

for i in range(4):
print(i, end=' ') # 结果:0 1 2 3

Python 3中的 range 方法就相当于 Python 2中的 xrange 方法

map函数:

Python 2:  map函数返回list

print map(lambda x: x+1, range(5))

# 结果:[1, 2, 3, 4, 5]

Python 3:  map函数返回iterator

print(map(lambda x: x+1, range(5)))

# 结果:<map object at 0x00000233A7B85E10>

print(list(map(lambda x: x+1, range(5))))

# 结果:[1, 2, 3, 4, 5]

filter函数在Python 2和Python 3中也是同样的区别

不支持has_key:

Python 2:

my_dict = {"age": 30, "name": "Zhang San"}
print my_dict.has_key("age")
print "age" in my_dict # 结果:True
# True

Python 3:

my_dict = {"age": 30, "name": "Zhang San"}
print("age" in my_dict) # 结果:True print(person.has_key("age")) # 结果:AttributeError: 'dict' object has no attribute 'has_key'

[python]python2与python3版本的区别的更多相关文章

  1. 字符编码 + python2和python3的编码区别(day08整理)

    目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...

  2. python版本坑:md5例子(python2与python3中md5区别)

    对于一些字符,python2和python3的md5加密出来是不一样的. Python2 和Python3MD5加密 # python2.7 pwd = "xxx" + chr(1 ...

  3. Python - Python2与Python3的区别、转换与兼容

    区别 Python2.x与Python3.x版本区别:http://www.runoob.com/python/python-2x-3x.html 示例解读Python2和Python3之间的主要差异 ...

  4. 《转》windows下通过cmd切换python2和python3版本

    当电脑中同时安装了python2和python3时,往往会由切换版本的需求.那么如何通过cmd命令行做到呢? 方法:修改python.exe的文件名 举个栗子: 我的电脑中同时安装了py2.7.10和 ...

  5. 字符编码、python2和python3编码的区别

    目录 字符编码 文本编辑器存储信息的过程 python解释器解释python代码的流程 python解释器与文本编辑器的异同 不同编码格式存入与读取数据的过程 乱码的分析 python2和python ...

  6. Python - Python2与Python3合理共存Windows平台

    Install Python2 and Python3 Python 2.7.13 - Windows x86-64 MSI installer Python 3.6.0 - Windows x86- ...

  7. python2与python3 版本区别

    目录 编码 输入输出 中文 除法 长整形 内置函数map xrange init reduce 字符串类型 dict字典 经典类 新式类 未完待补充 编码 python2默认编码器为ascii码(只支 ...

  8. python第七十课——python2与python3的一些区别

    1.性能:py3.x起始比py2.x效率低,但是py3.x有极大的优化空间,效率正在追赶 2.编码:py3.x原码文件默认使用utf-8编码,使得变量名更为广阔 中国='CHI' print(中国) ...

  9. Python2和Python3之间的区别

    编码区别 Python3.X版本中源码文件默认使用的是utf-8编码 Unicode 字符串 Python 2有两种字符串类型:Unicode字符串和非Unicode字符串 Python 3只有一种类 ...

随机推荐

  1. C#4.5-4.7学习总结

    4.5讲的是this关键字.它用于表示对当前实例的引用,它有三种用法,一是访问属性,解决与局部变量名称冲突问题,二是访问成员方法,在类中调用自己的成员方法,就是在一个方法中,通过this.方法名,调用 ...

  2. windows 控制台下运行cl命令

    前提:确保已经安装vc6或者vs系列 我们可以再命令行直接编译c++程序, 在windows操作系统中,打开命令行,输入cl,若系统提示:'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件. ...

  3. MyBatisPlus忽略映射字段注解

    MyBatisPlus忽略映射字段注解 @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(exist = true):表示该 ...

  4. Flask主要知识点

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  5. 四、UI开发之核心基础——约束(实用)

    概述 本节将会介绍最常用的几种约束,基本可以满足90%以上的UI布局要求. 先附上一份其他优秀博客https://blog.csdn.net/companion_1314/article/detail ...

  6. Python基础(一)常用函数

    1.map() 此函数可以,将列表内每一个元素进行操作,并返回列表 原型 map(function,[list]) def fc(x): return x * 2 print(map(fc,[1,2, ...

  7. java Quartz定时器任务与Spring 的实现

    1.xml配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/ ...

  8. 极致21点开发DAY1

    最近在学习UI框架,无奈没有完整的项目学习,四处搜索找了这款游戏源码,在Unity2018上完美运行.于是乎开始学习开发这款游戏.今天主要完成的任务时拼UI.搭建了3个场景, StartScene, ...

  9. Vue系列之 => ref获取DOM元素和组件

    可以获取DOM元素,和组件中的数据,方法 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. EasyUI出现多条边框重合的问题

    比如在 下面使用一个datagrid表格,可能出现某几条边框重合的问题,这种情况需要在div一层的panel添加"border:false"属性,datagrid不做处理即可