Python - 2x和3x的区别

编码:

回到顶部

Python2的默认编码是ASCII码,这是导致Python2中经常遇到编码问题的主要原因之一,至于原因,在于Python这门语言出现的时候,还没有Unicode!

Python3默认编码是Unicode,因此,不必再文件顶部写# codeing=utf-8了。

#Python2:

importsys>>>sys.getdefaultencoding()'ascii'

#Python3:

importsys>>>sys.getdefaultencoding()'utf-8'

查看默认编码

字符串:

回到顶部

Python2中,字符串有两种类型,Unicode和str,前者表示文本字符串,后者表示字节序列,但在Python2中并没有严格的界限,所以容易出错。

Python3中,str表示字符串,byte表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列,这就从源头上阻止编码错误的问题。

True和False:

回到顶部

Python2中true和false是两个全局变量,在数值上对应1和0

Python3则把true和false指定为关键字,永远指向两个固定的对象,不能被重新赋值

#Python2:

>>> True =False>>>True

False>>> True = 1

>>>True1

>>> False = 'x'

>>>False'x'

#Python3:

>>> True =False

File"", line 1SyntaxError: can't assign to keyword

>>> True = 1File"", line 1SyntaxError: can't assign to keyword

>>> importkeyword>>> keyword.iskeyword('True')

True>>>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']

True和False的区别

nonlocal:

回到顶部

Python2中无法给嵌套函数中的变量声明为非局部变量,只能使用global关键字声明某个变量为全局变量

Python3中新增关键字nonlocal,可以解决这一问题

a = 3

deffunc1():

a= 1

deffoo():

a= 2foo()print(a) #1

func1()deffunc2():

a = 1

def foo():

nonlocal a

a = 2

foo()

print(a) # 2

func2()

nonlocal

语法:

回到顶部

去除了 <> ,全部使用 !=  # python2两个都可以,python3则只能用 !=

去除 '' ,新增repr()

新增关键字:as,with,True,False,None

整形除法返回浮点数,如想要得到整形结果,使用 //

去除print语句,变为print()函数实现相同功能,同样的还有exec语句,改为exec()函数

改变了顺序操作符的行为,例如,x > y,当x和y类型不同时则抛出TypeError,而不是返回bool值

输入函数由raw_input改为input

去除元组参数解包,不能再def(a,(b,c)):pass这样定义函数

新的super(),可以不用传递参数

#Python2

>>> 6 / 2

3

>>> 6 //2

3

>>> 1 <> 2True>>> 1 != 2True>>> 'a' < 1False>>> 'a' < 1False>>> 'a' > 1True

#Python3

>>> 6 / 2

3.0

>>> 6 //2

3

>>> 1 <> 2File"", line 1

1 <> 2

^SyntaxError: invalid syntax>>> 1 != 2True>>> 'a' < 1Traceback (most recent call last):

File"", line 1, in TypeError:'

!=示例

异常:

回到顶部

异常都继承BaseException

用 raise Exception(args)代替 raise Exception, args语法

捕获异常的语法改变,引入了as关键字来标识异常实例

模块:

回到顶部

移除cPickle模块,可以使用pickle模块代替

移除imageop模块

移除bsddb模块

移除new模块

os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下

tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是 tokenize.tokenize()

其它:

回到顶部

xrange()改为range(),要想使用range()获得一个list,必须显示调用:list(range(100))

bytes对象不能hash,也不支持 b.lower()、b.strip()和b.split()方法,但对于后两者可以使用 b.strip(b’

\n\t\r \f’)和b.split(b’ ‘)来达到相同目的

zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload

()函数都被去除了

Python3中file类被废弃

#Python2

>>>file

#Python3

>>>file

Traceback (most recent call last):

File"", line 1, in NameError: name'file' is not defined

file示例

摘自:

python 2x和python 3x的区别_python2x和3x区别相关推荐

  1. python 2x与python 3x是否兼容_使.next()与Python2和3兼容

    不要直接调用.next()方法.在迭代器上使用^{} function:for u in up: head = next(u)[1:].strip() q = "".join(s. ...

  2. [ 转]Python模块(二)import和from...import的区别

    Python模块(二)import和from...import的区别 听语音 原创 | 浏览:2975 | 更新:2018-04-02 13:02 | 标签:PYTHON 1 2 3 4 5 6 7 ...

  3. python定义类()中写object和不写的区别

    python定义类()中写object和不写的区别 这里需要说明一下: python3中,类定义默认继承object,所以写不写没有区别 但在python2中,并不是这样 所以此内容是针对python ...

  4. Python 调试:step into/step out/step over 的区别

    Python 调试:step into/step out/step over 的区别: 首先在PyCharm 程序中设置 " 断点 ",后点击右上角的Debug 按钮进入调试程序状 ...

  5. Python单引号、双引号和三双引号的区别

    转载自:https://blog.csdn.net/sinat_25957705/article/details/71055406 Python单引号.双引号和三双引号的区别 python字符串通常有 ...

  6. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  7. 怎么更进一步学python_【百尺竿头,更进一步学Python】Python进阶课程——进程,线程和协程的区别...

    本文带来各类奇怪的IT百科知识. [百尺竿头,更进一步学Python]Python进阶课程--进程:线程和协程的区别 现在多进程多线程已经是老生常谈了:协程也在最近几年流行起来.今天我们本文主要介绍进 ...

  8. python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别

    1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...

  9. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

最新文章

  1. autowired java_Java 基础之Autowired 是否是自动注入
  2. GMIS 2017 大会陈雨强演讲:机器学习模型,宽与深的大战
  3. 电子计算机工程学,计算机工程
  4. presentViewController 动画处理
  5. QInputDialog Multiple Inputs 输入多个变量的对话框
  6. 准备树莓派下的模块开发环境
  7. 选购计算机五个原则,双十一笔记本电脑推荐
  8. 如何使用ABP进行软件开发之基础概览
  9. 【java web】java执行预编译Groovy脚本
  10. 译文-Minor GC vs Major GC vs Full GC
  11. Android 四大组件学习之BroadcastReceiver一
  12. LeetCode:81. Search in Rotated Sorted Array II
  13. python学习笔记(2)—— 控制流
  14. 国产操作系统银河麒麟V10桌面版新手小白常见问题
  15. 关于闲鱼测试数据构造,我有几条心得
  16. 无刷直流电机学习笔记1
  17. Python定时获取外网IP地址并发送邮件
  18. 计算某个字符出现的次数
  19. 北大计算机在本部吗,北大本部和北大医学部都属于北京大学,那么两者有什么区别?...
  20. vue中使用woo.js + animate.css

热门文章

  1. 使用Asynchronous RFC call 拆分time consuming task
  2. Java Jackson源码研究 - how is class member attribute information is parsed by Serializer
  3. SAP Spartacus如何使用自定义的Cart Service
  4. 一个SAP顾问的回忆:我过去很胖!
  5. 将矩阵转为一行_LeetCode 力扣官方题解 | 861. 翻转矩阵后的得分
  6. AC自动机build时的一点小优化
  7. 医学图像处理期末复习(三)
  8. android sqlite触发器,SQLite---使用触发器(Trigger)
  9. linux中的mysql启动失败(一直连续出现点点的状态)
  10. 2021高考襄阳四中成绩查询,襄阳四中2020年高考成绩怎么样(高考喜报)