Фарқи байни Python 3 ва 2.7 чист?


ҷавоб диҳед 1:

Дар ҳоли ҳозир, ҷаҳони Python асосан ба ду фраксия тақсим шудааст, ки он то ҳол дар Python 2.7 кор мекунад ва дигаре, ки ба 3.x муҳоҷиратро оғоз кардааст ё бидуни ҳеҷ дониш ва таҷриба дар 2.7 истифода мебарад

Python 2.7 дар оянда дигар дастгирӣ нахоҳад шуд ва ба қарибӣ кӯҳна мешаванд. Вақтсанҷи Python 2.7

Ҳамин тавр, савол дар бораи он, ки фарқияти байни 3.x ва 2.7 кадом аст, як савол аст, зеро дар фарқият аз дигар такмилдиҳӣ, Python 3.x на танҳо хусусиятҳои нав дорад, балки он инчунин философияи дохилӣ ва тарроҳиро тағйир медиҳад. Ва беҳтар мебуд, ки Python 3.x забони баркамол Python номида шавад, танҳо такмил додан аз 2.7

Инҳоянд фарқиятҳои калидӣ дар 2.7 ва 3.x.

  1. Муносибат бо str ва Юникод:

Дар Python 2.7 сатрҳои муқаррарӣ, сатрҳои байт ва Юникод мавҷуданд. Дар асл, байтҳо ва муқаррарӣ дар Python 2.7 аслан яксонанд.

my_str = 'мисол' byte_str = b'example 'uni_str = u'example' чоп (намуди (my_str) # бармегардад аз чоп (намуди (byte_str) # бармегардад аз чоп (type (uni_str) # бармегардад берун

Чизе беҳтар аз намуди байт нест. Ба ибораи дигар, сатри муқаррарӣ монанди навъи рамзикунонидашуда бо танҳо ASCII аломат иборат аст. Мисол (Python 2.7)

>>> my_str = 'барои' # аломатҳои махсус ва умла, аломати ASCII >>> Meine_str 'f \ xfcr' >>> чоп (my_str) курку

Дар мисоли дар боло овардашуда, аломати ASCII дар my_str ба замимаи ascii char дар замина иваз карда шудааст, аммо print (my_str) сатри дурустро чоп кардааст. Ин барои он рух медиҳад, ки Python 2.7 дохилии My_str -ро рамзӣ мекунад. Пас шумо наметавонед усули рамзгузорро барои my_str ё python2.7 str даъват кунед. Аммо декодироват кардан мумкин аст, зеро он аллакай Python рамзӣ шудааст.

my_str.encode ('лотин-1') UnicodeDecodeError -ро баланд мекунад, зеро my_str аллакай рамзгузорӣ шудааст. my_str.decode ('latin-1') # сатри Юникодро бармегардонад.

Дар Python 3.x, Юникод ҳамчун сатр (str type) ва байт ҳамчун намуди байт номида мешавад. Ин маънои онро дорад, ки ҳама сатрҳо Юникод сатрҳо мебошанд ва сатри муқаррарӣ вуҷуд надорад. Навъи сатрҳо дар Python 3 танҳо Юникод ва Байт мебошанд.

my_str = 'мисол' byte_str = b'example 'uni_str = u'example' чоп (намуди (my_str) # бармегардад аз чоп (намуди (byte_str) # бармегардад аз чоп (type (uni_str) # бармегардад берун

Ин маънои онро дорад, ки шумо бо нобаёнӣ шумо метавонед ҳар як аломатро ғайр аз ASCII дорои навъи str / unicode дохил ё нигоҳ доред. Баръакси python2.7, python3.x сатрро дар дохили худ рамзгузорӣ намекунад ва аломатро мувофиқи услуби Юникод нигоҳ медорад. Масалан

>>> my_str = 'барои' # аломатҳои махсус ва умла, аломати ASCII >>> my_str 'fur' >>> чоп (my_str) кур >>> b'for '# кӯшиш мекунад, ки як байтро бо ғайри ASCII нависад Барои доштани аломатҳо. Хатогиро баланд мекунад, ки байтҳо метавонанд аломатҳои ASCII дошта бошанд. Аммо, шумо метавонед онро бо таъмин кардани схемаи рамзгузорӣ >>> s1 = байт (my_str, 'utf-8') >>> шумо метавонед онро рамзгузорӣ кунед ё нависед >> s1 b'f s2 = mein_str.encode ('utf-8') >>> \ xfcr '>>> s2 b'f \ xfcr' # Натиҷаи якхела >>> s1.decode ('utf-8') 'барои' # сатри Юникод

2. Дар Python 3.x қариб ҳама чиз тавлидкунанда аст

Тағироти аз ҳама асосӣ ва калонтарин дар Python 3.x дар муқоиса бо Python 2.7 ин аст, ки ҳама чиз тавлидкунанда шудааст. Генераторҳои Python бартарии истифодаи самараноки хотираро доранд. Чаро вақте ки шумо як элементро дар як вақт ба даст меоред, хотираи n-ро аз даст медиҳед?

Дар python2.7 методҳои диапазон ва xrange мавҷуданд, ки xrange тавлидкунанда аст ва доираи он рӯйхати элементҳоро дорад.

>>> Диапазони (5) [1, 2, 3, 4, 5] >>> xrange (5) xrange (5) # объекти итератори, ки рақамро ба вуҷуд меорад, агар лозим бошад

Дар Python 3.x XRange вуҷуд надорад, худи диапазон мисли XRange аз Python 2.7 амал мекунад

Ба ин монанд, ҳар як занг ё объекте, ки рӯйхати элементҳоро дар python2.7 бармегардонад, дар Python 3.x аз ҷониби объекти генератор иваз карда мешавад.

Намунаҳо

Python 2.7 >>> диапазон (5) [1, 2, 3, 4, 5] Python 3.x >>> диапазон (5) диапазон (5) # иншооти генератори Python 2.7 >>> zip ([1,2,3) ], [4,5,6]) ((1, 4), (2, 5), (3, 6)] Python 3.x >>> zip ([1,2,3], [4,5 , 6]) объекти zip # объекти zip генератор Python 2.7 >>> корт (Lambda x: x * x, [1,2,3,4,5]) [1, 4, 9, 16, 25] Python 3. x >>> корт (Lambda x: x * x, [1,2,3,4,5]) корти объекти корт # корти генератори объект Python 2.7 >>> d1 = {'a': 1, 'b': 2, 'c ': 3} >>> d1.items () [(' a ', 1), (' b ', 2), (' c ', 3)] Python 3.x >>> d1 = {' a ' : 1, 'b': 2, 'c': 3} >>> d1.items () объекти дик_итемс # дикт_итемс объекти генератор # объектҳои ба ин монанд ҳам барои d1.values ​​() ва d1.keys ()

Ин ва қариб ҳамаи намудҳои функсияҳое, ки рӯйхатро дар Python 2.7 баргардонданд, ҳоло объекти генератори дар Python 3.6

Баръакси Python 2.7, ки унсурҳоро дар луғат бо тартиби фармоишӣ дар бар мегирад, луғати Python 3.6 инчунин арзишро бо тартиби фармоишӣ дар бар мегирад.

3. Функсияҳоро бо навъи иттилооти пешбинишуда ва навъи додаҳо дар Python 3.x муайян кунед.

def myfunc (num: int) -> int: мавҷуданд

Ин конвенсия ба арзиши ҳозираатон дохил намешавад. Ин танҳо анҷуманест, ки нишон додани як намуди муайяни додаҳо пешбинӣ шудааст. Аммо, барои ягон арзиши дигар ҳеҷ гуна хатогӣ ё истисноӣ оварда намешавад.

Барои маълумоти бештар дар ин бора, ҷавоби дигари маро дар зери ҷавоб Vivek Keshores дида бароед: Чӣ гуна ман дар Python 3 параметрҳои намуди қавӣ ворид мекунам?

4. Паҳншавии фосилаи глобалӣ дар Python2.7

Биёед фосилаи глобалии фосилаи ҷаҳонро бо истифода аз мисол фаҳмем.

>>> i = 10 >>> чоп i 10 >>> l1 = [i i дар минтақа (5)] >>> чоп l1 >>> [0, 1, 2, 3, 4] >>> i 4-ум

Дар мисоли дар боло овардашуда мебинед, ки тағирёбандаи глобалии "i" дар заминаи мафҳуми литсензия иваз карда мешавад, ки ин набояд ба амал ояд.

Дар ҳоле ки дар Python 3.x ҳеҷ гуна паҳншавии фосилаи глобалӣ вуҷуд надорад. Тағирёбанда бо ҳамон ном дар контексти маҳаллӣ ба тағйирёбандаи глобалӣ бо ҳамон ном таъсир надорад.

>>> i = 10 >>> чоп i 10 >>> l1 = [i i дар минтақа (5)] >>> чоп l1 >>> [0, 1, 2, 3, 4] >>> i 10-ум

Ғайр аз ҳамаи ин дигаргуниҳо, каме дигаргуниҳо ба монанди вуҷуд доранд

  • дархости чоп (2.7) ва чоп () усули (3.x) input () & raw_input () -ро дар 2.7 ва танҳо вуруди () -ро дар 3.x натиҷаҳои натиҷавии '/' оператори дар 2.7 ва 3. истифодаи 'as' ҳангоми Муносибати истисно дар 3.6, ба истиснои ValueError ҳамчун даврзании erBanker дар 3.x, бар хилофи 2.7, масалан дар 2.7 давр (14.5) -> 15 ва давр (15.5) -> 16, аммо дар Python 3.x. Давра (14.5) -> 15 ва инчунин даври (15.5) -> 15

ҷавоб диҳед 2:

Барои гирифтани маълумоти бештар дар бораи фарқи байни Python 3 ва Python 2.7 ба Python Software Foundation Wiki Server нигаред, ки фарқиятҳо байни Python 2.7 ва 3.3-ро муфассал шарҳ медиҳад. Ин дар ҳақиқат аз он чизе ки мехоҳед ба даст оваред, вобаста аст. Хулоса: "Python 2.x мерос аст, Python 3.x имрӯз ва ояндаи забон аст."

Байни ин ду фарқиятҳои кунда мавҷуданд. Бузургтарин фарқият, бо вуҷуди ин, ин баён аст.

Дар изҳороти PRINT аз чӣ фарқ дорад

Аз мубоҳисаҳо дар бораи фаровонии стек,

"Аз ҳама намоён (фарқият) ин аст, ки чӣ гуна изҳороти" чоп "кор мекунад. Ин кофист, ки ҳамон як скрипт дар ҳарду версия ҳамзамон иҷро шуда наметавонад, аммо якеро интихоб кунед ва шумо зид нестед. "Шумо метавонед дар бораи пайвастан ба мактаби хуби барномасозӣ бо номи Holberton School ва омӯхтани версияҳои Python ва дигар забонҳои бузурги барномасозӣ, дар ин бора бештар маълумот гиред. "Бартарии асосии 3.x дар он аст, ки он замон нав аст, бинобар ин ҳама хусусиятҳои нав ба ҷои илова кардани он ба 2.x татбиқ карда мешаванд. Чизи дигаре, ки шумо мехоҳед ба назар гиред, ин он пенифести муштараки оянда аст. Пас, агар шумо пас аз чанд сол назар андозед, ин шохаи баркамоле хоҳад буд, ки одамон ба он мераванд. "


ҷавоб диҳед 3:

Барои гирифтани маълумоти бештар дар бораи фарқи байни Python 3 ва Python 2.7 ба Python Software Foundation Wiki Server нигаред, ки фарқиятҳо байни Python 2.7 ва 3.3-ро муфассал шарҳ медиҳад. Ин дар ҳақиқат аз он чизе ки мехоҳед ба даст оваред, вобаста аст. Хулоса: "Python 2.x мерос аст, Python 3.x имрӯз ва ояндаи забон аст."

Байни ин ду фарқиятҳои кунда мавҷуданд. Бузургтарин фарқият, бо вуҷуди ин, ин баён аст.

Дар изҳороти PRINT аз чӣ фарқ дорад

Аз мубоҳисаҳо дар бораи фаровонии стек,

"Аз ҳама намоён (фарқият) ин аст, ки чӣ гуна изҳороти" чоп "кор мекунад. Ин кофист, ки ҳамон як скрипт дар ҳарду версия ҳамзамон иҷро шуда наметавонад, аммо якеро интихоб кунед ва шумо зид нестед. "Шумо метавонед дар бораи пайвастан ба мактаби хуби барномасозӣ бо номи Holberton School ва омӯхтани версияҳои Python ва дигар забонҳои бузурги барномасозӣ, дар ин бора бештар маълумот гиред. "Бартарии асосии 3.x дар он аст, ки он замон нав аст, бинобар ин ҳама хусусиятҳои нав ба ҷои илова кардани он ба 2.x татбиқ карда мешаванд. Чизи дигаре, ки шумо мехоҳед ба назар гиред, ин он пенифести муштараки оянда аст. Пас, агар шумо пас аз чанд сол назар андозед, ин шохаи баркамоле хоҳад буд, ки одамон ба он мераванд. "