python3和Python2的区别(被坑太久了)
print函数:(Python3中print为一个函数,必须用括号括起来;Python2中print为class)
Python 2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。
Python 2
|
1
2
3
4
|
print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
|
run result:
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
Python 3
|
1
2
3
4
|
print('Python', python_version())
print('Hello, World!')
print("some text,", end="")
print(' print more text on the same line')
|
run result:
Python 3.4.1
Hello, World!
some text, print more text on the same line
通过input()解析用户的输入:(Python3中input得到的为str;Python2的input的到的为int型,Python2的raw_input得到的为str类型)统一一下:Python3中用input,Python2中用row_input,都输入为str
幸运的是,在 Python 3 中已经解决了把用户的输入存储为一个 str 对象的问题。为了避免在 Python 2 中的读取非字符串类型的危险行为,我们不得不使用 raw_input() 代替。
Python 2
Python 2.7.6
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> my_input = input('enter a number: ')
enter a number: 123
>>> type(my_input)
<type 'int'>
>>> my_input = raw_input('enter a number: ')
enter a number: 123
>>> type(my_input)
<type 'str'>
Python 3
Python 3.4.1
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> my_input = input('enter a number: ')
enter a number: 123
>>> type(my_input)
<class 'str'>
整除:(没有太大影响)(Python3中/表示真除,%表示取余,//表示地板除(结果取整);Python2中/表示根据除数被除数小数点位得到结果,//同样表示地板除)统一一下:Python3中/表示真除,%表示取余,//结果取整;Python2中带上小数点/表示真除,%表示取余,//结果取整
Python 2
|
1
2
3
4
5
|
print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
|
run result:
Python 2.7.6
3 / 2 = 1
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0
Python 3
|
1
2
3
4
5
|
print('Python', python_version())
print('3 / 2 =', 3 / 2)
print('3 // 2 =', 3 // 2)
print('3 / 2.0 =', 3 / 2.0)
print('3 // 2.0 =', 3 // 2.0)
|
run result:
Python 3.4.1
3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0
xrange模块:
在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中xrange() 会抛出命名异常)。
在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。
这个表现十分像生成器(比如。“惰性求值”)。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。
由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。
待补充。。。
http://chenqx.github.io/2014/11/10/Key-differences-between-Python-2-7-x-and-Python-3-x/
http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.html
|
python 2.4 与 python 3.0 的比较 一、 print 从语句变为函数 原: print 1, 2+3 改为: print ( 1, 2+3 ) 二、range 与 xrange 原 : range( 0, 4 ) 结果 是 列表 [0,1,2,3 ] 改为:list( range(0,4) ) 原 : xrange( 0, 4 ) 适用于 for 循环的变量控制 改为:range(0,4) 三、字符串 原: 字符串以 8-bit 字符串存储 改为: 字符串以 16-bit Unicode 字符串存储 四、try except 语句的变化 原: try: ...... except Exception, e : ...... 改为 try: ...... except Exception as e : ...... 五、打开文件 原: file( ..... ) 或 open(.....) 改为: 只能用 open(.....) 六、从键盘录入一个字符串 原: raw_input( "提示信息" ) 改为: input( "提示信息" ) 七、bytes 数据类型 A bytes object is an immutable array. The items are 8-bit bytes, represented by integers in the range 0 <= x < 256. bytes 可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。 由于在 python 3.0中字符串以 unicode 编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式的编码为字节序列后,方可写入。 (一)字符串编码(encode) 为 bytes 例: s = "张三abc12" b = s.encode( 编码方式) # b 就是 bytes 类型的数据 # 常用的编码方式为 : "uft-16" , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等 # 注 : 当字符串不能编码为指定的“编码方式”时,会引发异常 (二) bytes 解码(decode)为字符串 s = "张三abc12" b = s.encode( "gbk") # 字符串 s 编码为 gbk 格式的字节序列 s1 = b.decode("gbk") # 将字节序列 b以gbk格式 解码为字符串 # 说明,当字节序列不能以指定的编码格式解码时会引发异常 (三)使用方法举例 #coding=gbk f = open("c:\\1234.txt", "wb") input("?") 读取该文件的例子: #coding=gbk f = open("c:\\1234.txt", "rb") 运行后应显示: 张三李四abcd1234 (四) bytes序列,一但形成,其内容是不可变的 例: s="ABCD" b=s.encode("gbk") print b[0] # 显示 65 b[0] = 66 # 执行该句,出现异常: 'bytes' object does not support item assignment 八、 chr( K ) 与 ord( c ) python 2.4.2以前 chr( K ) 将编码K 转为字符,K的范围是 0 ~ 255 ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 255 python 3.0 chr( K ) 将编码K 转为字符,K的范围是 0 ~ 65535 ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 65535 九、 除法运算符 python 2.4.2以前 10/3 结果为 3 python 3.0 10 / 3 结果为 3.3333333333333335 10 // 3 结果为 3 十、字节数组对象 --- 新增 (一) 初始化 a = bytearray( 10 ) # a 是一个由十个字节组成的数组,其每个元素是一个字节,类型借用 int # 此时,每个元素初始值为 0 (二) 字节数组 是可变的 a = bytearray( 10 ) a[0] = 25 # 可以用赋值语句更改其元素,但所赋的值必须在 0 ~ 255 之间 (三) 字节数组的切片仍是字节数组 (四) 字符串转化为字节数组 #coding=gbk s ="你好" b = s.encode( "gbk") # 先将字符串按某种“GBK”编码方式转化为 bytes c = bytearray( b ) #再将 bytes 转化为 字节数组 也可以写作 c = bytearray( "你好", "gbk") (五) 字节数组转化为字符串 c = bytearray( 4 ) c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68 s = c.decode( "gbk" ) print ( s ) # 应显示: ABCD (六) 字节数组可用于写入文本文件 #coding=gbk f = open("c:\\1234.txt", "wb") f.write( b ) input("?") |
RookieDong的补充
1,“import thread”问题,2.x中的模块thread在3.x中编程"_thread"(需要在前面加一个下划线).否则会出现“ImportError: No module named thread
dd
python3和Python2的区别(被坑太久了)的更多相关文章
- python3和python2语法区别
1.print python2中是print xxx python3中是print(xxx) 2.抛异常except python2中except Exception,e: print "E ...
- python3和Python2的区别
一.print函数 python2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象 二.通过input()解析用户的输入 python3中inp ...
- Python3.* 和Python2.*的区别
许多Python初学者都会问:我应该学习哪个版本的Python.对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本.等学得差不多了,再 ...
- Python3 和 Python2的区别
目录 print Python2.7的print不是一个function Python3里的print是一个function. Unicode Python 2 有 ASCII str() 类型,un ...
- Python3与Python2的区别汇总
1.print 在Python3.0 是一个函数,正确输入应该是:print (3x) 2.raw_input 在Python3.0改成input
- python3与python2的区别(目前遇到的)
1.进击的print,变成一个函数,print() 2.urllib大一统,呵呵 3.python3默认绝对路径导入
- python3 与 python2的 区别比较
http://sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html
- python3和python2的区别部分
字典没有iteritems(),只有items() py2items()返回的是列表,iteritems()返回的是迭代器 py3items()返回的是迭代器
- python3与python2的区别 记录一波
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...
随机推荐
- HDU1050(Moving Tables:贪心算法)
解题思路: 这种做法是基于hdu2037的做法上考虑的,找出所有可以同时搬运的桌子,然后就很方便求出最短总时间. 还有一种更简单的做法是直接遍历一遍找出与别的重复次数最多的那片区域,重复次数*10就可 ...
- 武汉Uber优步司机奖励政策(1月18日~1月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- String Problem - HDU 3374 (kmp+最大最小表示)
题目大意:有一个字符串长度为N的字符串,这个字符串可以扩展出N个字符串,并且按照顺序编号,比如串 ” SKYLONG “ SKYLONG 1 KYLONGS 2 YLONGSK 3 LONGSKY ...
- 什么是method swizzling
其实跟字面的意思很相近.方法的调和.可以去修改oc中两个方法的调用. 这张图看起来会比较形象 20130718230430859.png 就是把两个实现调换具体的做法,首先,用Categroy建立自己 ...
- java MessageFormat 应用 和 疑惑
先来个demo String string = "{0}\"{1}\""; System.out.println(MessageFormat.format(st ...
- nginx 配置 开发
1 .安装: 2.修改配置文件nginx.conf 添加server:
- hash定义
* 若结构中存在关键字和K相等的记录,则必定存储在f(K)的位置上.由此,不需比较便可直接取得所查记录.这个对应关系f称为 散列函数(Hash function),按这个思想建立的表为 散列表. * ...
- [Ruby] Ruby Variable Scope
Scope defines where in a program a variable is accessible. Ruby has four types of variable scope, lo ...
- Swift: 基本操作符
这里只讲一下Swift中比较特殊的操作符,在其他语言中也存在操作符就不再讲了 Nil-Coalescing Operator: ?? The nil-coalescing operator (a ?? ...
- AJAX入门学习(转)
一.基础概念 1.全称:Asynchronous.JavaScript.And.XML(异步的 JavaScript 和 XML). 2.定义: Ajax不是一个技术,它实际上是几种技术,每种技术都有 ...