python 2和3 语法相差大么

 我来答
巛梦翼彡
2016-10-07 · 超过23用户采纳过TA的回答
知道答主
回答量:58
采纳率:100%
帮助的人:11.8万
展开全部
你好,Python2.x和Python3.x的语法主要差别是
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有True,False,None
4)整型除法返回浮点数,要得到整型结果,请使用//
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗号结尾禁止换行
3.X: print(x, end=" ") # 使用空格代替换行
2.X: print # 输出新行
3.X: print() # 输出新行
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # 输出repr((x, y))
3.X: print((x, y)) # 不同于print(x, y)!
7)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值
8)输入函数改变了,删除了raw_input,用input代替:
2.X:guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法
3.X:guess = int(input('Enter an integer : '))
9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了
10)新式的8进制字变量,相应地修改了oct()函数。
2.X的方式如下:
>>> 0666
438
>>> oct(438)
'0666'
3.X这样:
>>> 0666
SyntaxError: invalid token (<pyshell#63>, line 1)
>>> 0o666
438
>>> oct(438)
'0o666'
11)增加了 2进制字面量和bin()函数
>>> bin(438)
'0b110110110'
>>> _438 = '0b110110110'
>>> _438
'0b110110110'
12)扩展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list
对象和seq是可迭代的。
13)新的super(),可以不再给super()传参数,
>>> class C(object):
def __init__(self, a):
print('C', a)
>>> class D(C):
def __init(self, a):
super().__init__(a) # 无参数调用super()
>>> D(8)
C 8
<__main__.D object at 0x00D7ED90>
14)新的metaclass语法:
class Foo(*bases, **kwds):
pass
15)支持class decorator。用法与函数decorator一样:
>>> def foo(cls_a):
def print_func(self):
print('Hello, world!')
cls_a.print = print_func
return cls_a
>>> @foo
class C(object):
pass
>>> C().print()
Hello, world!
class decorator可以用来玩玩狸猫换太子的大把戏。更多请参阅PEP 3129
shenjian9619
2017-02-16 · TA获得超过1537个赞
知道小有建树答主
回答量:1007
采纳率:50%
帮助的人:572万
展开全部
基础语法差别是不大的,部分方法的调用方式改变了少许而已,有的函数被作为了方法,等等,很少不同,而第三方库就很多了,基本3和2差别很大,当然也只是名字上不同,语法本质上还是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4019040
2016-08-02 · TA获得超过466个赞
知道小有建树答主
回答量:372
采纳率:66%
帮助的人:214万
展开全部
不是特别大,基本相同。
但也有一些小改动,比如print函数,在3版本中必须加括号了。
你学习的话可以从3版本学,但是2版本的库支持更强大一些。
所以,看你选择了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
六锶尽念飘1e
2016-09-26 · TA获得超过1693个赞
知道大有可为答主
回答量:2034
采纳率:82%
帮助的人:1529万
展开全部
差别还是比较大的 如果没有工具帮助的话 会很难转换
pycharm 可以识别版本差异 并帮助修正
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三釜山
2016-08-24 · 超过17用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:23.9万
展开全部
其实写法上没有特别大的差别,个别地方有所改动
比如打印方面
print 要加括号才行
urill模块的合并

Unicode
Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。
现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。
具体的可以参考这个链接http://www.runoob.com/python/python-2x-3x.html
上边写的很详细
你可以参考下。
官网上也有介绍,可以去看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式