Articles

Belangrijkste verschillen tussen Python 2 en 3: Hoe te navigeren veranderen

In deze tutorial worden de volgende onderwerpen behandeld:

  1. Expressies
  2. Opties afdrukken
  3. Gelijke bewerkingen
  4. Range
  5. Geautomatiseerde migratie
  6. Prestatieproblemen
  7. Enkele belangrijke huishoudelijke wijzigingen
  8. Heeft u problemen?

Expressies

Expressies vertegenwoordigen iets, zoals een getal, een string of een instantie van een klasse. Elke waarde is een expressie! Alles wat iets doet is een statement. Elke toewijzing aan een variabele of functie-aanroep is een statement. Elke waarde in dat statement is een expressie.

Dit is wat je zou typen om een geëvalueerde expressie te krijgen in Python 2:

X = raw_input ("enter some values)

Maar in Python 3, zou je dit moeten typen:

X = input ("enter some values") 

Dus, wat we dan ook invoeren voor de waarde wordt toegewezen aan variabele x in zowel 2 als 3. Wanneer ik 2*6 invoer in Python 2, zal het resultaat 12 zijn, wat de geëvalueerde waarde is.

Wanneer ditzelfde programma echter in Python 3 wordt uitgevoerd, is het resultaat een string-waarde. In dit geval zou het eruit zien als 2*6 in string formaat.

Dan, hoe kunnen we de geëvalueerde expressie krijgen? We moeten een uitdrukking of functie gebruiken die eval heet. Als je eval voor de invoer schrijft, verandert de uitdrukking in een geëvalueerde waarde.

x= eval(input("enter some values")) = 12 

Uitgewerkte expressievoorbeelden:

Hier ziet het eruit in Python 2:

name = input("What is your name? ")print ("Hello, %s." %name) 

A En de uitvoer:

python

Hier ziet u hoe het er in Python 3 uit zou zien:

name = input("What is your name? ")print ("Hello, %s." %name) 

En de uitvoer:

python

Zoals u duidelijk kunt zien, is er maar weinig verschil tussen de twee.

Lees ook: Een inleiding tot de programmeertaal Python

Toen Guido van Rossum Python ontwikkelde, wilde hij een “eenvoudige” programmeertaal maken die de kwetsbaarheden van andere systemen omzeilde. Door de eenvoudige syntaxis en de geavanceerde syntactische zinnen is de taal de standaard geworden voor verschillende wetenschappelijke toepassingen zoals machine learning.

Print opties

In Python 2 is print een statement dat geen haakje nodig heeft. In Python 3 is print een functie en moeten de waarden tussen haakjes worden geschreven.

Python 2

Invoer:

print "hello world" 

Uitvoer:

python

Python 3

Invoer:

1 != 1.0print (False) 

Uitvoer:

python

Gelijke operaties

Laten we overgaan naar het derde verschil. Wanneer we in Python 2 een ongelijke operator gebruiken, moeten we de groter dan > of kleiner dan < tekens gebruiken. Echter, in Python 3, is er een algemene operator. Het uitroepteken ! en gelijkheidsteken = worden gebruikt om aan te geven als dingen niet gelijk zijn.

Python 2 – <> operator wordt gebruikt voor niet gelijk
Python 3 – ! operator wordt gebruikt voor niet gelijk

Python 2

Input:

1 <> 1.0print "False" 

Output:

PYTHON

Python 3

Input:

1 != 1.0print (False)1 != 1.0print (False) 

Output:

ZIE OOK: Glances: Houd je code goed in de gaten met deze Python monitoring tool

Range

Nu gaan we het hebben over ranges. Wat zijn ranges?

Een range wordt gebruikt om een lijst met getallen te genereren, die over het algemeen wordt gebruikt om over te itereren met for loops.

python

Hier zie je X gelijk aan Range 10. Toen we de variabele X controleerden, gaf deze ons lijsttype terug. Dit betekent dat in Python 2, bereik het type lijst is. Wanneer ik X schrijf, krijgen we daarna een lijst van object. dat is 0 1 2 3 4 5 6 7 8 9.

python

Nu gaan we naar de Python 3, wanneer we schrijven x gelijk aan bereik 5. Deze waarde van bereik 5 wordt toegewezen aan de variabele X; wanneer we het type voor variabele X controleren, dan geeft het zelf een bereik object terug. Dit betekent dat in Python 3 range zelf een range object is.

Python 2

Input:

print range(0,10,1) 

Output:

Python 3

Input:

print(list(range(10))) 

Output:

Geautomatiseerde migratie

Dus, hoe automatiseren we het migratiescript om code van Python 2 naar 3 te verplaatsen?

Hier kunnen we testen met een eenvoudig programma als Add 2 Numbers in python.

Python 2

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add) 

Output:

Nu kunnen we met behulp van de 2 naar 3 migratie de bovenstaande code omzetten.

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print('sum of {0} and {1} is {2}'.format(n1, n2, add)) 

Output:

Dus hier zien we dat het kan worden geconverteerd naar Python 3 code door 2 naar 3 op de opdrachtregel.

Python biedt zijn eigen tool genaamd 2to3.py. Die een aantal scripts uitvoert om je python 2 code te vertalen naar 3. Hoewel het niet perfect is, maar het doet over het algemeen een geweldige job. Na het omzetten van code, moet je handmatig alle problemen oplossen.

Zie je ook: Kom, Nagini. We moeten die Python code controleren

Prestaties

De meeste prestatieproblemen zijn in deze upgrade verholpen! Bij het vergelijken van benchmarks tussen de twee versies zijn de verschillen bijna te verwaarlozen.

Enkele belangrijke huishoudelijke wijzigingen

Python 2

  • print functionele haakjes optioneel.
  • Prefix string met u om unicode string te maken.
  • Deling van gehele getallen geeft altijd geheel getal terug – 5/2=2.
  • Raw_input () leest string.
  • input() evalueert gelezen data.
  • generator .next().

Python 3

  • print functionele haakjes verplicht.
  • String standaard unicode.
  • Deling van gehele getallen kan resulteren in float – 5/2=2.5.
  • Raw_input() niet beschikbaar.
  • Input leest altijd string.
  • Next (generator).
  • Py2 naar py3 utility.
  • Dictionary .keys() en .values() retourneert een view niet een lijst.
  • Kan niet langer vergelijkingsoperatoren gebruiken voor niet-natuurlijke vergelijkingen.
    Eg. Geen < Geen zal een TypeError opwekken in plaats van false terug te geven.
  • Percent (%) string opmaak operator is deprecated gebruik de .format() Functie of concatenation.

ZIE OOK: Top 5 IDE’s en code-editors voor Python

Heb je problemen?

Het kan zijn dat je hier en daar een fout tegenkomt als je al een tijdje in python 2.x werkt. Dat is niet erg! Gewoon even googelen op het probleem, het is bijna zeker dat iemand anders dat probleem ook heeft gehad bij het migreren.

Laat een antwoord achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *