[python]python2与python3版本的区别
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版本的区别的更多相关文章
- 字符编码 + python2和python3的编码区别(day08整理)
目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...
- python版本坑:md5例子(python2与python3中md5区别)
对于一些字符,python2和python3的md5加密出来是不一样的. Python2 和Python3MD5加密 # python2.7 pwd = "xxx" + chr(1 ...
- Python - Python2与Python3的区别、转换与兼容
区别 Python2.x与Python3.x版本区别:http://www.runoob.com/python/python-2x-3x.html 示例解读Python2和Python3之间的主要差异 ...
- 《转》windows下通过cmd切换python2和python3版本
当电脑中同时安装了python2和python3时,往往会由切换版本的需求.那么如何通过cmd命令行做到呢? 方法:修改python.exe的文件名 举个栗子: 我的电脑中同时安装了py2.7.10和 ...
- 字符编码、python2和python3编码的区别
目录 字符编码 文本编辑器存储信息的过程 python解释器解释python代码的流程 python解释器与文本编辑器的异同 不同编码格式存入与读取数据的过程 乱码的分析 python2和python ...
- Python - Python2与Python3合理共存Windows平台
Install Python2 and Python3 Python 2.7.13 - Windows x86-64 MSI installer Python 3.6.0 - Windows x86- ...
- python2与python3 版本区别
目录 编码 输入输出 中文 除法 长整形 内置函数map xrange init reduce 字符串类型 dict字典 经典类 新式类 未完待补充 编码 python2默认编码器为ascii码(只支 ...
- python第七十课——python2与python3的一些区别
1.性能:py3.x起始比py2.x效率低,但是py3.x有极大的优化空间,效率正在追赶 2.编码:py3.x原码文件默认使用utf-8编码,使得变量名更为广阔 中国='CHI' print(中国) ...
- Python2和Python3之间的区别
编码区别 Python3.X版本中源码文件默认使用的是utf-8编码 Unicode 字符串 Python 2有两种字符串类型:Unicode字符串和非Unicode字符串 Python 3只有一种类 ...
随机推荐
- php导出超大csv导出方法,读取超大文件或者接受超大数组,防止内存溢出
基本思路就是,知道总数之后分割成2万一个数组进行查询,最后独立写入csv,避免数据过大导致溢出 速度还不错,在php7下,机器I5 8G内存,128G,SSD,52W多条,大概也就30秒,出来整个文件 ...
- Golang数据类型总结及其转换
golang数据类型 基本类型:boolean,numeric,string类型的命名实例是预先声明的. 复合类型:array,struct,指针,function,interface,slice,m ...
- java学习笔记-集合set
equals指内容(值)相等,== 指地址相等 ===============set类 set继承自collection,但set没有新增方法,只是set里的元素不重复,下面是set常用方法 ==== ...
- bootstrap 中关于 HTML5 aria-* and role的用法
HTML5 aria-* and role 在bootstrap中看到role和aria-*,不知道干嘛的.google一下,发现aria的意思是Accessible Rich Internet Ap ...
- 3、jeecg 笔记之 模糊查询
1.前言 jeecg 考虑到默认模糊查询的话,会增加系统压力,导致查询慢,本来系统就挺那啥的... 2.方式一之实体赋值 实体重新赋值查询,用 * %% * 实现,我们知道 sql 中通常使用 % 去 ...
- python将对象名的字符串类型,转化为相应对象的操作方法
在实际使用Python的过程中,遇到了一个问题,就是定义一个数组,数组内容为对应类名字的字符串. 此时在调用对应的类,生成实例时,需要将字符串转化为相应的类,之后再进行实例化. # coding : ...
- vim格式化markdown表格
title: vim格式化markdown表格 date: 2017-11-23 15:23:25 tags: vim categories: 开发工具 安装插件 https://github.com ...
- Lua论分析需求(学好英文)的重要性
题目是这样的: Observe that its base and height are both equal to , and the image is drawn using # symbols ...
- 最详细的 paypal 支付接口开发--Java版
做全球性的支付,选用paypal!为什么选择paypal? 因为paypal是目前全球最大的在线支付工具,就像国内的支付宝一样,是一个基于买卖双方的第三方平台.买家只需知道你的paypal账号,即可在 ...
- TCP/IP协议详解内容总结(怒喷一口老血)
TCP/IP协议(本文源自外部链接) TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络 ...