python2和python3的区别 python2和python3的区别

Python2\u4e0ePython3\u7684\u533a\u522b\uff1f

\u4ece\u57fa\u672c\u8bbe\u8ba1\u4e0a\u6765\u8bf4\uff0cPython3\u7684\u76ee\u7684\u5c31\u662f\u6ca1\u6709\u4ee3\u7801\u517c\u5bb9\u7684\u5305\u88b1\u60c5\u51b5\u4e0b\u8fdb\u884c\u6539\u8fdb\u4e86Python\uff0c\u76f8\u5bf9\u4e8ePython2\u6765\u8bf4\uff0cPython3\u6709\u5f88\u591a\u7684\u6539\u8fdb\uff0c\u66f4\u52a0\u5bb9\u6613\u7406\u89e3\uff0c\u4e5f\u66f4\u52a0\u5408\u7406\u3002
\u800c\u4e14\u4ece\u5e94\u7528\u7684\u89d2\u5ea6\u4e0a\u6765\u8bf4\uff0cpypy\u3001web\u6846\u67b6\u3001\u79d1\u5b66\u8ba1\u7b97\u5305\u3001scrapy\u7b49\u5e38\u7528\u6a21\u5757\u90fd\u662f\u652f\u6301Python3\u7684\uff0c\u4f46\u662f\u90e8\u5206\u6bd4\u8f83\u9648\u65e7\u7684\u5e93\u5df2\u7ecf\u6ca1\u6709\u4eba\u8fdb\u884c\u7ef4\u62a4\uff0c\u4e5f\u5c31\u6ca1\u6709\u652f\u6301Python3.
\u5f53\u6211\u4eec\u8fdb\u884c\u65e5\u5e38\u4f7f\u7528\u7684\u60c5\u51b5\u4e4b\u4e0b\uff0c\u53ef\u4ee5\u76f4\u63a5\u5199Python2\3\u517c\u5bb9\u7684\u4ee3\u7801\uff0c\u76f8\u5bf9\u4e8e\u6765\u8bf4\uff0cPython2\u5bf9\u4e8e\u65e7\u5e93\u7684\u652f\u6301\u66f4\u591a\u4e00\u4e9b\uff0c\u81f3\u5c11\u5728\u5b66\u754c\u8fd8\u662f\u6bd4\u8f83\u6d41\u884c\u7684\u3002
\u76f8\u5bf9\u4e8e\u6765\u8bf4\uff0cPython3\u5bf9\u4e8ePython\u5b66\u4e60\u6765\u8bf4\u66f4\u52a0\u5177\u6709\u597d\u5904\uff0c\u4e5f\u662f\u672a\u6765\u6d41\u884c\u7684\u8d8b\u52bf\uff0c\u5efa\u8bae\u76f4\u63a5\u5b66\u4e60Python3\uff0c\u672a\u6765\u4f7f\u7528\u7387\u66f4\u4e3a\u5e7f\u6cdb\u3002

1.\u6027\u80fd
Py3.0\u8fd0\u884c pystone benchmark\u7684\u901f\u5ea6\u6bd4Py2.5\u616230%\u3002Guido\u8ba4\u4e3aPy3.0\u6709\u6781\u5927\u7684\u4f18\u5316\u7a7a\u95f4\uff0c\u5728\u5b57\u7b26\u4e32\u548c\u6574\u5f62\u64cd\u4f5c\u4e0a\u53ef
\u4ee5\u53d6\u5f97\u5f88\u597d\u7684\u4f18\u5316\u7ed3\u679c\u3002
Py3.1\u6027\u80fd\u6bd4Py2.5\u616215%\uff0c\u8fd8\u6709\u5f88\u5927\u7684\u63d0\u5347\u7a7a\u95f4\u3002
2.\u7f16\u7801
Py3.X\u6e90\u7801\u6587\u4ef6\u9ed8\u8ba4\u4f7f\u7528utf-8\u7f16\u7801\uff0c\u8fd9\u5c31\u4f7f\u5f97\u4ee5\u4e0b\u4ee3\u7801\u662f\u5408\u6cd5\u7684\uff1a
>>> \u4e2d\u56fd = 'china'
>>>print(\u4e2d\u56fd)
china
3. \u8bed\u6cd5
1\uff09\u53bb\u9664\u4e86\uff0c\u5168\u90e8\u6539\u7528!=
2\uff09\u53bb\u9664``\uff0c\u5168\u90e8\u6539\u7528repr()
3\uff09\u5173\u952e\u8bcd\u52a0\u5165as \u548cwith\uff0c\u8fd8\u6709True,False,None
4\uff09\u6574\u578b\u9664\u6cd5\u8fd4\u56de\u6d6e\u70b9\u6570\uff0c\u8981\u5f97\u5230\u6574\u578b\u7ed3\u679c\uff0c\u8bf7\u4f7f\u7528//
5\uff09\u52a0\u5165nonlocal\u8bed\u53e5\u3002\u4f7f\u7528noclocal x\u53ef\u4ee5\u76f4\u63a5\u6307\u6d3e\u5916\u56f4\uff08\u975e\u5168\u5c40\uff09\u53d8\u91cf
6\uff09\u53bb\u9664print\u8bed\u53e5\uff0c\u52a0\u5165print()\u51fd\u6570\u5b9e\u73b0\u76f8\u540c\u7684\u529f\u80fd\u3002\u540c\u6837\u7684\u8fd8\u6709 exec\u8bed\u53e5\uff0c\u5df2\u7ecf\u6539\u4e3aexec()\u51fd\u6570
\u4f8b\u5982\uff1a
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # \u4f7f\u7528\u9017\u53f7\u7ed3\u5c3e\u7981\u6b62\u6362\u884c
3.X: print(x, end=" ") # \u4f7f\u7528\u7a7a\u683c\u4ee3\u66ff\u6362\u884c
2.X: print # \u8f93\u51fa\u65b0\u884c
3.X: print() # \u8f93\u51fa\u65b0\u884c
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # \u8f93\u51farepr((x, y))
3.X: print((x, y)) # \u4e0d\u540c\u4e8eprint(x, y)!
7\uff09\u6539\u53d8\u4e86\u987a\u5e8f\u64cd\u4f5c\u7b26\u7684\u884c\u4e3a\uff0c\u4f8b\u5982x<y\uff0c\u5f53x\u548cy\u7c7b\u578b\u4e0d\u5339\u914d\u65f6\u629b\u51faTypeError\u800c\u4e0d\u662f\u8fd4\u56de\u968f\u5373\u7684 bool\u503c
8\uff09\u8f93\u5165\u51fd\u6570\u6539\u53d8\u4e86\uff0c\u5220\u9664\u4e86raw_input\uff0c\u7528input\u4ee3\u66ff\uff1a
2.X:guess = int(raw_input('Enter an integer : ')) # \u8bfb\u53d6\u952e\u76d8\u8f93\u5165\u7684\u65b9\u6cd5
3.X:guess = int(input('Enter an integer : '))
9\uff09\u53bb\u9664\u5143\u7ec4\u53c2\u6570\u89e3\u5305\u3002\u4e0d\u80fddef(a, (b, c)):pass\u8fd9\u6837\u5b9a\u4e49\u51fd\u6570\u4e86
10\uff09\u65b0\u5f0f\u76848\u8fdb\u5236\u5b57\u53d8\u91cf\uff0c\u76f8\u5e94\u5730\u4fee\u6539\u4e86oct()\u51fd\u6570\u3002
2.X\u7684\u65b9\u5f0f\u5982\u4e0b\uff1a
>>> 0666
438
>>> oct(438)
'0666'
3.X\u8fd9\u6837\uff1a
>>> 0666
SyntaxError: invalid token (, line 1)
>>> 0o666
438
>>> oct(438)
'0o666'
11\uff09\u589e\u52a0\u4e86 2\u8fdb\u5236\u5b57\u9762\u91cf\u548cbin()\u51fd\u6570
>>> bin(438)
'0b110110110'
>>> _438 = '0b110110110'
>>> _438
'0b110110110'
12\uff09\u6269\u5c55\u7684\u53ef\u8fed\u4ee3\u89e3\u5305\u3002\u5728Py3.X \u91cc\uff0ca, b, *rest = seq\u548c *rest, a = seq\u90fd\u662f\u5408\u6cd5\u7684\uff0c\u53ea\u8981\u6c42\u4e24\u70b9\uff1arest\u662flist
\u5bf9\u8c61\u548cseq\u662f\u53ef\u8fed\u4ee3\u7684\u3002
13\uff09\u65b0\u7684super()\uff0c\u53ef\u4ee5\u4e0d\u518d\u7ed9super()\u4f20\u53c2\u6570\uff0c
>>> class C(object):
def __init__(self, a):
print('C', a)
>>> class D(C):
def __init(self, a):
super().__init__(a) # \u65e0\u53c2\u6570\u8c03\u7528super()
>>> D(8)
C 8

14\uff09\u65b0\u7684metaclass\u8bed\u6cd5\uff1a
class Foo(*bases, **kwds):
pass
15\uff09\u652f\u6301class decorator\u3002\u7528\u6cd5\u4e0e\u51fd\u6570decorator\u4e00\u6837\uff1a
>>> 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\u53ef\u4ee5\u7528\u6765\u73a9\u73a9\u72f8\u732b\u6362\u592a\u5b50\u7684\u5927\u628a\u620f\u3002\u66f4\u591a\u8bf7\u53c2\u9605PEP 3129
4. \u5b57\u7b26\u4e32\u548c\u5b57\u8282\u4e32
1\uff09\u73b0\u5728\u5b57\u7b26\u4e32\u53ea\u6709str\u4e00\u79cd\u7c7b\u578b\uff0c\u4f46\u5b83\u8ddf2.x\u7248\u672c\u7684unicode\u51e0\u4e4e\u4e00\u6837\u3002
2\uff09\u5173\u4e8e\u5b57\u8282\u4e32\uff0c\u8bf7\u53c2\u9605\u201c\u6570\u636e\u7c7b\u578b\u201d\u7684\u7b2c2\u6761\u76ee
5.\u6570\u636e\u7c7b\u578b
1\uff09Py3.X\u53bb\u9664\u4e86long\u7c7b\u578b\uff0c\u73b0\u5728\u53ea\u6709\u4e00\u79cd\u6574\u578b\u2014\u2014int\uff0c\u4f46\u5b83\u7684\u884c\u4e3a\u5c31\u50cf2.X\u7248\u672c\u7684long
2\uff09\u65b0\u589e\u4e86bytes\u7c7b\u578b\uff0c\u5bf9\u5e94\u4e8e2.X\u7248\u672c\u7684\u516b\u4f4d\u4e32\uff0c\u5b9a\u4e49\u4e00\u4e2abytes\u5b57\u9762\u91cf\u7684\u65b9\u6cd5\u5982\u4e0b\uff1a
>>> b = b'china'
>>> type(b)

str\u5bf9\u8c61\u548cbytes\u5bf9\u8c61\u53ef\u4ee5\u4f7f\u7528.encode() (str -> bytes) or .decode() (bytes -> str)\u65b9\u6cd5\u76f8\u4e92\u8f6c\u5316\u3002
>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'
3\uff09dict\u7684.keys()\u3001.items \u548c.values()\u65b9\u6cd5\u8fd4\u56de\u8fed\u4ee3\u5668\uff0c\u800c\u4e4b\u524d\u7684iterkeys()\u7b49\u51fd\u6570\u90fd\u88ab\u5e9f\u5f03\u3002\u540c\u65f6\u53bb\u6389\u7684\u8fd8\u6709
dict.has_key()\uff0c\u7528 in\u66ff\u4ee3\u5b83\u5427
6.\u9762\u5411\u5bf9\u8c61
1\uff09\u5f15\u5165\u62bd\u8c61\u57fa\u7c7b\uff08Abstraact Base Classes\uff0cABCs\uff09\u3002
2\uff09\u5bb9\u5668\u7c7b\u548c\u8fed\u4ee3\u5668\u7c7b\u88abABCs\u5316\uff0c\u6240\u4ee5cellections\u6a21\u5757\u91cc\u7684\u7c7b\u578b\u6bd4Py2.5\u591a\u4e86\u5f88\u591a\u3002
>>> import collections
>>> print('\n'.join(dir(collections)))
Callable
Container
Hashable
ItemsView
Iterable
Iterator
KeysView
Mapping
MappingView
MutableMapping
MutableSequence
MutableSet
NamedTuple
Sequence
Set
Sized
ValuesView
__all__
__builtins__
__doc__
__file__
__name__
_abcoll
_itemgetter
_sys
defaultdict
deque
\u53e6\u5916\uff0c\u6570\u503c\u7c7b\u578b\u4e5f\u88abABCs\u5316\u3002\u5173\u4e8e\u8fd9\u4e24\u70b9\uff0c\u8bf7\u53c2\u9605 PEP 3119\u548cPEP 3141\u3002
3\uff09\u8fed\u4ee3\u5668\u7684next()\u65b9\u6cd5\u6539\u540d\u4e3a__next__()\uff0c\u5e76\u589e\u52a0\u5185\u7f6e\u51fd\u6570next()\uff0c\u7528\u4ee5\u8c03\u7528\u8fed\u4ee3\u5668\u7684__next__()\u65b9\u6cd5
4\uff09\u589e\u52a0\u4e86@abstractmethod\u548c @abstractproperty\u4e24\u4e2a decorator\uff0c\u7f16\u5199\u62bd\u8c61\u65b9\u6cd5\uff08\u5c5e\u6027\uff09\u66f4\u52a0\u65b9\u4fbf\u3002
7.\u5f02\u5e38
1\uff09\u6240\u4ee5\u5f02\u5e38\u90fd\u4ece BaseException\u7ee7\u627f\uff0c\u5e76\u5220\u9664\u4e86StardardError
2\uff09\u53bb\u9664\u4e86\u5f02\u5e38\u7c7b\u7684\u5e8f\u5217\u884c\u4e3a\u548c.message\u5c5e\u6027
3\uff09\u7528 raise Exception(args)\u4ee3\u66ff raise Exception, args\u8bed\u6cd5
4\uff09\u6355\u83b7\u5f02\u5e38\u7684\u8bed\u6cd5\u6539\u53d8\uff0c\u5f15\u5165\u4e86as\u5173\u952e\u5b57\u6765\u6807\u8bc6\u5f02\u5e38\u5b9e\u4f8b\uff0c\u5728Py2.5\u4e2d\uff1a
>>> try:
... raise NotImplementedError('Error')
... except NotImplementedError, error:
... print error.message
...
Error
\u5728Py3.0\u4e2d\uff1a
>>> try:
raise NotImplementedError('Error')
except NotImplementedError as error: #\u6ce8\u610f\u8fd9\u4e2a as
print(str(error))
Error
5\uff09\u5f02\u5e38\u94fe\uff0c\u56e0\u4e3a__context__\u57283.0a1\u7248\u672c\u4e2d\u6ca1\u6709\u5b9e\u73b0
8.\u6a21\u5757\u53d8\u52a8
1\uff09\u79fb\u9664\u4e86cPickle\u6a21\u5757\uff0c\u53ef\u4ee5\u4f7f\u7528pickle\u6a21\u5757\u4ee3\u66ff\u3002\u6700\u7ec8\u6211\u4eec\u5c06\u4f1a\u6709\u4e00\u4e2a\u900f\u660e\u9ad8\u6548\u7684\u6a21\u5757\u3002
2\uff09\u79fb\u9664\u4e86imageop\u6a21\u5757
3\uff09\u79fb\u9664\u4e86 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2,
rexec, sets, sha, stringold, strop, sunaudiodev, timing\u548cxmllib\u6a21\u5757
4\uff09\u79fb\u9664\u4e86bsddb\u6a21\u5757(\u5355\u72ec\u53d1\u5e03)
5\uff09\u79fb\u9664\u4e86new\u6a21\u5757
6\uff09os.tmpnam()\u548cos.tmpfile()\u51fd\u6570\u88ab\u79fb\u52a8\u5230tmpfile\u6a21\u5757\u4e0b
7\uff09tokenize\u6a21\u5757\u73b0\u5728\u4f7f\u7528bytes\u5de5\u4f5c\u3002\u4e3b\u8981\u7684\u5165\u53e3\u70b9\u4e0d\u518d\u662fgenerate_tokens\uff0c\u800c\u662f tokenize.tokenize()
9.\u5176\u5b83
1\uff09xrange() \u6539\u540d\u4e3arange()\uff0c\u8981\u60f3\u4f7f\u7528range()\u83b7\u5f97\u4e00\u4e2alist\uff0c\u5fc5\u987b\u663e\u5f0f\u8c03\u7528\uff1a
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2\uff09bytes\u5bf9\u8c61\u4e0d\u80fdhash\uff0c\u4e5f\u4e0d\u652f\u6301 b.lower()\u3001b.strip()\u548cb.split()\u65b9\u6cd5\uff0c\u4f46\u5bf9\u4e8e\u540e\u4e24\u8005\u53ef\u4ee5\u4f7f\u7528 b.strip(b\u2019
\n\t\r \f\u2019)\u548cb.split(b\u2019 \u2018)\u6765\u8fbe\u5230\u76f8\u540c\u76ee\u7684
3\uff09zip()\u3001map()\u548cfilter()\u90fd\u8fd4\u56de\u8fed\u4ee3\u5668\u3002\u800capply()\u3001 callable()\u3001coerce()\u3001 execfile()\u3001reduce()\u548creload
()\u51fd\u6570\u90fd\u88ab\u53bb\u9664\u4e86
\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528hasattr()\u6765\u66ff\u6362 callable(). hasattr()\u7684\u8bed\u6cd5\u5982\uff1ahasattr(string, '__name__')
4\uff09string.letters\u548c\u76f8\u5173\u7684.lowercase\u548c.uppercase\u88ab\u53bb\u9664\uff0c\u8bf7\u6539\u7528string.ascii_letters \u7b49
5\uff09\u5982\u679cx < y\u7684\u4e0d\u80fd\u6bd4\u8f83\uff0c\u629b\u51faTypeError\u5f02\u5e38\u30022.x\u7248\u672c\u662f\u8fd4\u56de\u4f2a\u968f\u673a\u5e03\u5c14\u503c\u7684
6\uff09__getslice__\u7cfb\u5217\u6210\u5458\u88ab\u5e9f\u5f03\u3002a[i:j]\u6839\u636e\u4e0a\u4e0b\u6587\u8f6c\u6362\u4e3aa.__getitem__(slice(I, j))\u6216 __setitem__\u548c
__delitem__\u8c03\u7528
7\uff09file\u7c7b\u88ab\u5e9f\u5f03\uff0c\u5728Py2.5\u4e2d\uff1a
>>> file

\u5728Py3.X\u4e2d\uff1a
>>> file
Traceback (most recent call last):
File "", line 1, in
file
NameError: name 'file' is not defined

你应该是刚接触Python吧,建议直接学Python3.x

下面是Python2.x与3.x版本区别:

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

新的Python程式建议使用Python 3.0版本的语法。

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

Python 3.0的变化主要在以下几个方面:

1.print 函数

print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "fish"
print ("fish") #注意print后面有个空格
print("fish") #print()不能带有任何其它参数

然而,Python 2.6实际已经支持新的print()语法:

from __future__ import print_function
print("fish", "panda", sep=', ')

2.Unicode(这是一个极其好的改进)

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。

现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。

由于 Python3.X 源码文件默认使用utf-8编码,这就使得以下代码是合法的:

>>> 中国 = 'china' 
>>>print(中国) 
china

Python 2.x

>>> str = "我爱北京天安门"
>>> str
'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> str = u"我爱北京天安门"
>>> str
u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'

Python 3.x

>>> str = "我爱北京"
>>> str
'我爱北京'

3.除法运算

Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//

首先来说/除法:

在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。

在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

Python 2.x:

>>> 1 / 2
0
>>> 1.0 / 2.0
0.5

Python 3.x:

>>> 1/2
0.5

注意的是并不是舍弃小数部分,而是执行floor操作,如果要截取小数部分,那么需要使用math模块的trunc函数

python 3.x:

>>> import math
>>> math.trunc(1 / 2)
0
>>> math.trunc(-1 / 2)
0

4.异常

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

捕获异常的语法由 except exc, var 改为 except exc as var。

使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5.xrange

在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。

这个表现十分像生成器(比如。"惰性求值")。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。

由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。

在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。

import timeit
n = 10000
def test_range(n):
    return for i in range(n):
        pass
def test_xrange(n):
    for i in xrange(n):
        pass

Python 2

print 'Python', python_version()
print '
timing range()' 
%timeit test_range(n)
print '

timing xrange()' 
%timeit test_xrange(n)
Python 2.7.6
timing range()
1000 loops, best of 3: 433 µs per loop
timing xrange()
1000 loops, best of 3: 350 µs per loop

Python 3

print('Python', python_version())
print('
timing range()')
%timeit test_range(n)
Python 3.4.1
timing range()
1000 loops, best of 3: 520 µs per loop
print(xrange(10))
---------------------------------------------------------------------------
NameError                       Traceback (most recent call last)
<ipython-input-5-5d8f9b79ea70> in <module>()
----> 1 print(xrange(10))
NameError: name 'xrange' is not defined

6.八进制字面量表示

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。

新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。

在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000。

python 2.x

>>> 0o1000
512
>>> 01000
512

python 3.x

>>> 01000
  File "<stdin>", line 1
    01000
      ^
SyntaxError: invalid token
>>> 0o1000
512

7.不等运算符

Python 2.x中不等于有两种写法 != 和 <>

Python 3.x中去掉了<>, 只有!=一种写法,还好,我从来没有使用<>的习惯

8.去掉了repr表达式``

Python 2.x 中反引号``相当于repr函数的作用

Python 3.x 中去掉了``这种写法,只允许使用repr函数,这样做的目的是为了使代码看上去更清晰么?不过我感觉用repr的机会很少,一般只在debug的时候才用,多数时候还是用str函数来用字符串描述对象。

def sendMail(from_: str, to: str, title: str, body: str) -> bool:
    pass

9.多个模块被改名(根据PEP8)

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

10.数据类型

1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long

2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下:

>>> b = b'china' 
>>> type(b) 
<type 'bytes'>

str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化。

>>> s = b.decode() 
>>> s 
'china' 
>>> b1 = s.encode() 
>>> b1 
b'china'

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它吧 。



python2和python3的区别
如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问题:版本问题!!是学习python2 还是学习 python3 ?这是非常让人纠结的!
搜索一下便会发现python3 和 python2 是不兼容的,而且差异比较大,到底学习哪个版本呢?下面就来为大家分析一下:

其实python是linux上最常用的软件之一,但是linux目前的版本大部分还是使用python2的,而且,在linux上依赖python2的程序更多一些,所以 Python3 要代替 python2 成为主流还需要几年的时间。

当初设计 Python3 的目的是没有代码兼容的包袱的情况下改进 Python,但个人认为改进得还不够大刀阔斧,没有彻底改进一些bug,还有不少的 wart 错过了改进机会,因此造成的语法不兼容的地方也没最初设想的多。

人们几年摸索慢慢下来,大部分的情况下可以直接写 2/3 兼容的代码,也有 six 这类的兼容层可用。

所以先学 Python2 还是 Python3 都不是问题,或者说都是问题。
目前现状是实际应用中大部分暂不考虑 Python3,有的时候注意写兼容 2/3 的代码。用 Python2 为主的写新代码时要考虑以后迁移到 Python3 的可能性。

论学 Python2 还是 Python3,都需要注意另外一边的不同点:所幸就是这些不同点很容易掌握,只有一个 unicode encoding
对较多人造成困扰(同时也是很多 web 相关库移植的主要障碍,3.3 重新支持 u'',情况大大改善了)学习python2 还是
python3 、使用python2 还是 python3 需要看具体情况而定.

所以我建议:
1. 如果是你在企业中,需要用到python而学习python的话,那就要看企业的应用python的版本进行学习;
2. 如果想要更多的成熟解决方案,最少的bug,最稳定的应用那就用python2 ;
3. 如果你是在读大学的学生,那我建议你学习python3,等到毕业的时候或许python已经成为了主流。

python2和python3分别是python的两个版本,python3作为一个升级版,许多针对早期Python版本设计的程式都无法在Python
3.0上正常执行的。区别:
1、Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'
Python3 使用 print 必须要以小括号包括打印内容,比如 print('hi')
2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存
3、python2中使用ascii编码,python3中使用utf-8编码
4、python2中unicode表示字符串序列,str表示字节序列
python3中str表示字符串序列,byte表示字节序列
5、python2中为正常显示中文,引入coding声明,python3中不需要
6、python2中是raw_input()函数,python3中是input()函数
极光爬虫,数据采集服务服务提供商,为您提供更快,更可靠的服务。

从基本设计上来说,Python3的目的就是没有代码兼容的包袱情况下进行改进了Python,相对于Python2来说,Python3有很多的改进,更加容易理解,也更加合理。
而且从应用的角度上来说,pypy、web框架、科学计算包、scrapy等常用模块都是支持Python3的,但是部分比较陈旧的库已经没有人进行维护,也就没有支持Python3.
当我们进行日常使用的情况之下,可以直接写Python2\3兼容的代码,相对于来说,Python2对于旧库的支持更多一些,至少在学界还是比较流行的。
相对于来说,Python3对于Python学习来说更加具有好处,也是未来流行的趋势,建议直接学习Python3,未来使用率更为广泛。无论是Python2还是Python3先学都不是问题的,差别并不是很大,主要还是靠自己,只要自己愿意去学习,都可以选择。

简单的说,2是旧3是新,3是2的升级版,3完全高于2,2是时代的眼泪3是现在和未来,2逐渐被淘汰3用的人越来越多。

之前两个版本共存只是因为诸多package的更新换代并没有跟上,但是到了现在只要还有活人维护的package基本都兼容3了,然而新建的package却越来越多不兼容2。使用2的意义基本没有了,日常用3大不了留一个2备用就行。



  • python2鍜宲ython3璇硶鍏煎鍚
    绛旓細Python2鍜孭ython3鍦ㄨ娉曚笂骞朵笉瀹屽叏鍏煎銆備袱涓増鏈箣闂村瓨鍦ㄤ竴浜涘樊寮傦紝鐗瑰埆鏄湪璇硶銆佹爣鍑嗗簱鍜岀紪鐮佹柟闈備緥濡傦紝Python2浣跨敤ASCII缂栫爜锛岃孭ython3鏀寔Unicode鍜屼腑鏂囷紝杩欐剰鍛崇潃鍦≒ython2缂栧啓鐨勪唬鐮佷腑锛屽鏋滃寘鍚腑鏂囧瓧绗︼紝鍙兘闇瑕佷慨鏀规墠鑳藉湪Python3涓甯歌繍琛屻傚彟澶栵紝Python3瀵逛竴浜涜娉曡繘琛屼簡鏀硅繘鎴栧幓闄や簡涓浜涙棫鐨勮...
  • python2.x鍜3.x鐨勫尯鍒
    绛旓細1銆佽娉曞樊寮傦細Python3.x涓竴浜涜娉曟湁鍙樺寲锛屽锛宲rint璇彞鍦?Python3.x涓渶瑕佺敤?print锛堬級鍑芥暟浠f浛銆2銆佺紪鐮佹柟寮忥細Python3.x榛樿浣跨敤UTF-8缂栫爜锛岃Python2.x榛樿浣跨敤ASCII缂栫爜銆3銆佹暣鏁伴櫎娉曪細鍦≒ython3.x涓紝/杩愮畻绗︽绘槸鎵ц娴偣闄ゆ硶锛岃屽湪Python2.x涓紝/杩愮畻绗﹀湪鏁存暟鐜涓嬫墽琛屾暣闄ゃ4銆佸紓甯稿鐞嗭細...
  • python3鍜2鐨勫尯鍒湁浠涔
    绛旓細Python3 瀵 Unicode 瀛楃鐨勫師鐢熸敮鎸併侾ython2 涓娇鐢 ASCII 鐮佷綔涓洪粯璁ょ紪鐮佹柟寮忓鑷 string 鏈変袱绉嶇被鍨 str 鍜 unicode锛孭ython3 鍙 鏀寔 unicode 鐨 string銆Python2 鍜 Python3 瀛楄妭鍜屽瓧绗﹀搴斿叧绯讳负锛歅ython3 閲囩敤鐨勬槸缁濆璺緞鐨勬柟寮忚繘琛 import 鎺ㄨ崘锛歅ython鏁欑▼ Python2 涓浉瀵硅矾寰勭殑 import 浼氬鑷...
  • python2鍜宲ython3鍏煎鍢
    绛旓細涓嶅吋瀹广備负浜嗕笉甯﹀叆杩囧鐨勭疮璧橈紝Python3鍦ㄨ璁$殑鏃跺欐病鏈夎冭檻鍚戜笅鍏煎锛岄拡瀵规棭鏈Python2鐗堟湰璁捐鐨勭▼寮忛兘鏃犳硶鍦≒ython3涓婃甯告墽琛岋紝鎵浠ヤ笉鍏煎銆
  • python3.x瀹屽叏鍏煎python2.x鍚
    绛旓細璇ヤ唬鐮佸苟涓嶅畬鍏ㄥ吋瀹Python2.x銆Python3.x鍦ㄨ璁℃椂骞舵湭鑰冭檻鍚戜笅鍏煎锛屽洜姝よ澶氫负鏃╂湡Python鐗堟湰璁捐鐨勭▼搴忓湪Python3.x涓婃棤娉曟甯告墽琛屻侾ython3.x鍦ㄨ娉曞拰涓浜涙爣鍑嗗簱鏂归潰杩涜浜嗕竴浜涢噸澶х殑鏀瑰彉锛岃孭ython2.x鍒欎繚鐣欎簡涓浜涙棫鐨勮娉曞拰搴撱傝繖鎰忓懗鐫锛屽鏋滀唬鐮佹槸鐢≒ython2.x缂栧啓鐨勶紝鍙兘闇瑕佽繘琛屼竴浜涗慨鏀规墠鑳藉湪...
  • python+2+鍜宲ython+3+鐗堟湰鏈変粈涔堝尯鍒?
    绛旓細1. 璇硶涓嶅悓锛Python 3.x鐗堟湰鍦ㄨ娉曚笂鍋氬嚭浜嗛噸瑕佹敼鍙橈紝鍘绘帀浜嗕竴浜涗笉澶紭闆呯殑璇硶锛屽苟澧炲姞浜嗕竴浜涚畝渚挎槗鐢ㄧ殑鎿嶄綔銆傛瘮濡傦紝Python 3.x涓殑print鍑芥暟蹇呴』鍔犳嫭鍙凤紝鑰屽湪Python 2.x涓彲浠ョ洿鎺ヤ娇鐢ㄣ2. Unicode鏀寔锛歅ython 3.x鍦ㄥ唴缃殑string绫诲瀷涓粯璁ゆ敮鎸乁nicode缂栫爜锛岃孭ython 2.x涓渶瑕佹樉寮忓湴灏哢nicode...
  • python2鍜宲ython3鍙互鍚屾椂瀹夎鍚
    绛旓細鍙互鍚屾椂瀹夎锛屾楠ゅ涓嬶細涓銆佸畨瑁Python2锛堜互鍙妏ip锛1.1銆佸埌Python鐨勫畼缃 https://www.python.org/ 涓嬭浇Python鐨勫畨瑁呮枃浠讹紝瀵逛簬Windows鐢ㄦ埛鏉ヨ锛屽鏋滄槸32浣嶇郴缁燂紝鍒欓夋嫨x86鐗堟湰锛涘鏋滄槸64浣嶇郴缁燂紝鍒欓夋嫨64鐗堟湰鐨勫畨瑁呮枃浠躲傛垜鑷繁鐨勭數鑴戞槸64浣嶏紝涓嬮潰鐨勪緥瀛愭寜鐓64浣嶈繘琛岃鏄庛備笅杞界殑瀹夎鏂囦欢鐨勫悕瀛楃被浼间簬...
  • Python3.x鍜孭ython2.x鐨勫尯鍒
    绛旓細python3.x鍜2.x宸埆鐢氬ぇ锛屽彲浠ヨ瀹冧滑鍑犱箮鏄笉鍚岀殑璇█銆傜洰鍓峱ython3.x鐨勫簲鐢ㄤ笉鏄偅涔堝箍娉涖傜敱浜庡吋瀹规х殑鍘熷洜锛屽緢澶氳佺殑绋嬪簭閮芥槸鍩轰簬2.x銆傜敱浜巔ython3鐨勯瑕嗘э紝鍗充娇鏄瘮杈冩柊鐨勫簲鐢ㄤ篃涓嶄細閾よ岃蛋闄╀娇鐢3.x銆傛墍浠ヤ綘搴旇姣笉鐘硅鲍鍦伴夋嫨2.x銆傚畼鏂规彁渚涗竴涓皢python2浠g爜杞崲涓簆ython3浠g爜鐨勫皬宸ュ叿锛屽彨2...
  • python3鍜孭ython2鐨勫尯鍒
    绛旓細Python2鍜孭ython3鏄疨ython鐨勪袱涓富瑕佺増鏈紝涓や釜鐗堟湰鍦ㄨ娉曞拰搴撶殑浣跨敤涓婃湁涓浜涘尯鍒侾ython3鏄疨ython鐨勬渶鏂扮増鏈紝瀹冨湪璇█璁捐涓婂仛浜嗕竴浜涙敼杩涳紝淇浜嗕竴浜汸ython2涓瓨鍦ㄧ殑闂銆侾ython3鐨勪竴浜涢噸瑕佹敼杩涘寘鎷細鏀寔unicode锛歅ython3榛樿浣跨敤Unicode缂栫爜锛岃繖鎰忓懗鐫瀹冨彲浠ュ鐞嗕笉鍚岃瑷鐨勫瓧绗﹂泦銆俻rint鍑芥暟锛歅ython3涓...
  • 鍜孭ython2姣,Python3鏈変粈涔堟柊鍔熻兘璋冩暣?
    绛旓細鐩告瘮Python2.x榛樿閲囩敤鐨凙SCII缂栫爜锛孭ython3.x榛樿浣跨敤UTF-8缂栫爜锛屽彲浠ュ緢濂藉湴鏀寔涓枃鎴栧叾瀹冮潪鑻辨枃瀛楃銆備緥濡傦紝杈撳嚭涓鍙ヤ腑鏂囷紝浣跨敤Python2.x鍜孭ython3.x鐨勫尯鍒涓嬶細涓嶄粎濡傛锛屽湪Python3.x涓紝涓嬮潰鐨勪唬鐮佷篃鏄悎娉曠殑锛3銆丳ython3.x闄ゆ硶杩愮畻 鍜屽叾浠栬瑷鐩告瘮锛孭ython鐨勯櫎娉曡繍绠楄楂樼寰堝锛屽畠鐨勯櫎娉曡繍绠楀寘鍚...
  • 扩展阅读:b站必看的3000部纪录片 ... b站必看的3000部网页 ... b站必须看的3000个视频 ... photoshop在线网页版 ... pubmed官方官网入口 ... python3 x完全兼容python2 x ... photoshop永久免费版 ... python for beginners ... python手机版下载安装 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网