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 ...
随机推荐
- spj题
S(SNO,SNAME,SCITY) ,P(PNO,PNAME,COLOR,WEIGHT) ,J(JNO,JNAME,JCITY),其中S表示供应商,它的各属性依次为供应商号,供应商名,供应商所在城市 ...
- [Locked] Factor combinations
Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...
- poj3258
题目翻译 二分法(其实两个单词的意思分别是河,跳格子游戏,至于为啥翻译成二分法- -只能说英语博大精深啊) 奶牛每年举办一场有特色的跳格子游戏(很明显题目翻译错误)涉及到在河里从一块岩石跳到另一块岩石 ...
- SQL随笔
多表分页查询: ,; 向表中插入新的字段: ALTER TABLE `Table_name` ) NOT NULL DEFAULT '' AFTER `id`; 更新表数据: UPDATE [LOW ...
- hive 显示表分区真实对应数据路径
desc formatted l_ad_yclick_html partition (datecol='20160118');
- python daemon化你的程序
在之前的树莓派网关项目中遇到了这样一个问题,由于要把网关写的Server持续运行,尤其是要加电自动开启.发现ssh登录开启服务程序之后,当把pty退出时Server端自动断开了,这里想到的APUE中第 ...
- Chapter 1. OpenGL基础回顾 - Review of OpenGL Basics
译自<OpenGL® Shading Language, Second Edition> 本章主要回顾OpenGL应用编程接口,为后续章节中的材质铺垫基础.这并不是详尽的回顾.如果你已经 ...
- 三种root的修补方式
三种root的修补方式 system/core/adb/abd.c adbd漏洞,请看abd.c的第917行/* then switch user and group to "shell&q ...
- ubuntu vim YouComlpeteMe配置
使用vundle安装时,在.vimrc中添加 Plugin 'Valloric/YouCompleteMe' 使用Bundle会安装失败原因未知 YCM编译时附加选项--system-libclang ...
- iOS图片拉伸
常用的图片拉伸场景有:聊天页面的气泡,需要根据内容拉伸,但圆角拉伸后会变形,为避免圆角拉伸,可以指定拉伸区域.UIImage实体调用以下方法即可指定拉伸区域. - (UIImage *)stretch ...