Лучшее руководство по разница Python2.x с версии 3 .x в 2024 году. В этом руководстве вы можете изучить функция печати,Unicode,разделение,ненормальный,xrange,Восьмиштырьковый буквальное представление,операторы неравенства,Удалены выражение `` Repr,Множество модулей переименовываются (согласно PEP8),5. Типы данных,
3.0 версии Python, часто упоминается как Python 3000 или просто Py3k. Что касается более ранней версии Python, это крупное обновление.
Для того, чтобы не принести слишком много нагрузки, Python 3.0 не учитывает при разработке обратной совместимости.
Для многих программ, разработанные в более ранних версиях Python не будет выполнять должным образом на Python 3.0.
Для того, чтобы заботиться о существующей программе, Python 2.6 в качестве временной версии 2.x на Python с использованием базового синтаксиса и библиотек, принимая во внимание миграцию в Python 3.0 и Python 3.0 позволяет использовать часть синтаксиса функции.
Новая программа рекомендуется использовать Python 3.0 Python версии синтаксиса.Если среда выполнения не может установить Python 3.0 или сама программа не поддерживает использование сторонних библиотек Python 3.0. В настоящее время не поддерживает сторонние библиотеки Python 3.0 скручены, py2exe, PIL и тому подобное.
Большинство библиотек сторонних производителей пытаются Python 3.0 совместимой версии. Если не сразу использовать Python 3.0, также было рекомендовано разработать совместимой версии Python 3.0 программы, а затем использовать Python 2.6, Python 2.7 выполняется.
Изменения в Python 3.0 в основном в следующих областях:
оператор печати исчезает, заменяется функцией печати (). поддержка Python 2.6 и Python 2.7 в части эта форма синтаксиса печати. В Python 2.6 и Python 2.7 внутри, три формы эквивалентны:
print "fish" print ("fish") #注意print后面有个空格 print("fish") #print()不能带有任何其它参数
Тем не менее, Python 2.6 фактически поддерживает синтаксис новой печати ():
from __future__ import print_function print("fish", "panda", sep=', ')
Python 2 были ASCII ул () тип, юникода () один, а не тип байтов.
Теперь, в Python 3, мы, наконец, Unicode (UTF-8) строку и байт класса: байт и ByteArray,.
Поскольку 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 '我爱北京天安门'
Python разделение на других языках, кроме самого высокого конца, есть очень сложный набор правил. Python в разделении с двумя операторами и / //
Во-первых, он / Отдел:
В Python 2.x / деление так же, как большинство из нас знакомы с языком, такие как Java ах ах C аналогичен результатам целочисленного деления было целое, дробная часть полностью игнорируется, десятичная точка деления с плавающей останется частью ГЭТ результаты с плавающей запятой.
В питона 3.x / деление больше не делать этого, а для разделения между целыми числами, то результат будет с плавающей точкой.
Python 2.x:
>>> 1 / 2 0 >>> 1.0 / 2.0 0.5
Python 3.x:
>>> 1/2 0.5
Для // деление, это деление называется пол деление, результат будет автоматически разделение операции пол одинакова в Python 2.x и 3.x в питона.
Python 2.x:
>>> -1 // 2 -1
Python 3.x:
>>> -1 // 2 -1
Обратите внимание, что не отбросить дробную часть, но продолжать операции пол, если вы хотите, чтобы перехватить дробную часть, вам нужно использовать функциональный модуль Math TRUNC
Python 3.x:
>>> import math >>> math.trunc(1 / 2) 0 >>> math.trunc(-1 / 2) 0
Обработка в Python 3 также немного патологические изменения, в Python 3, теперь мы используем в качестве ключевого слова.
Синтаксис для перехвата исключений , сделанных заисключением возб, переменная изменилось , кроме возб как вар.
Синтаксис (кроме exc1, exc2) как вар может перехватывать исключения несколько категорий. Python 2.6 имеет поддержку обоих синтаксиса.
В эпоху 2.x, аномалии в коде в дополнение к этому процедурных ошибок, но и часто некоторые общие управляющие структуры должны делать в 3.x можно увидеть, что дизайнеры делают более конкретное аномальное изменение только по ошибке за исключением случая, чтобы поймать заявление в обращении.
Создание итерации объекта в Python 2 в использовании xrange () является очень популярным. Например: для цикла или списка / коллекции / словаря постижений.
Эта производительность генератора очень изображения (например. "Ленивые вычисления"). Но xrange-итерируемый бесконечно, неограниченные средства, которые могут перемещаться.
Из-за своей ленивой оценки, а не только тогда, когда вы не можете пройти его один раз, xrange () диапазон соотношения функции () быстрее (например, для циклов). Тем не менее, по сравнению с одной итерации, итерации не рекомендуется повторять несколько раз, так как генератор с нуля каждый раз.
В Python 3, диапазон () подобен 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 '\ntiming range()' %timeit test_range(n) print '\n\ntiming 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('\ntiming 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
Восьмеричное число должно быть записано 0o777, оригинальная форма 0777 не может быть использован, должен быть записан в двоичном 0b111.
Добавлена функция бункер () используется для преобразования целое число в двоичную строку. 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
Python 2.x не означает, что существует два способа написания! = И <>
Python 3.x уронить <> только! = Путь писать, но, к счастью, я никогда не использую <> диета
Python 2.x в обратные кавычки `` Repr функция эквивалентна роли
Python 3.x отказаться от `` обозначения, допускается только магнезии функции, целью этого является, чтобы сделать код выглядит более ясно, что? Но я чувствую, с возможностью Repr редко, как правило, только тогда, когда он используется в отладке, большую часть времени, или использовать функцию ул строка, описывающая объект.
def sendMail(from_: str, to: str, title: str, body: str) -> bool: pass
Старое название | новое наименование |
---|---|
_winreg | WinREG |
ConfigParser | ConfigParser |
copy_reg | copyreg |
очередь | очередь |
SocketServer | SocketServer |
магнезии | reprlib |
модуль StringIO теперь включен в новый модуль ввода-вывода. новые, md5 gopherlib модули будут удалены. Python 2.6 имеет поддержку нового модуля ввода-вывода.
HTTPLIB, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib быть включены в пакет HTTP.
Отмена EXEC заявление, только функцию Exec (). Python 2.6 имеет функцию поддержки EXEC ().
1) Py3.X удалены длинный тип, в настоящее время существует только одно целое --int, но он ведет себя как версии 2.х длинный
2) Добавлен байт типа, соответствующий версии 2.х серии восемь, определяют буквальным метод байт выглядит следующим образом:
>>> b = b'china' >>> type(b) <type 'bytes'>
ул объекты и байты объекты могут использовать .encode () (ул -> байт) или .decode () (байт -> ул) метод друг в друга.
>>> s = b.decode() >>> s 'china' >>> b1 = s.encode() >>> b1 b'china'
3) ДИКТ из .keys (),. Элементы и .values () метод возвращает итератор, в то время как предыдущие iterkeys () и другие функции отбрасываются. В то же время там удалены dict.has_key (), заменить его в нем.