Python 2 vs. Python 3 For Carleton CS Students
Python 2 vs. Python 3 For Carleton CS Students
Python
3
print(x) 4/3 = 1.33333 input() open(my_file.txt)
range()
4//3 = 1
The
print
statement
in
Python
2
becomes
a
print()
function
in
Python
3.
For
basic
print
functionality
the
only
difference
is
whether
or
not
to
use
parentheses
Python 2: print "The answer is", 42 Python 3: print("The answer is", 42) Output: The answer is 42 Python 2: print Python 3: print() Output: newline
To
format
printed
output,
Python
2
uses
special
syntax
while
Python
3
uses
the
keyword
arguments
sep
and
end.
sep determines
the
separator
used
between
arguments
to
the
print
function
(default
is
space), and
end determines
the
final
character
printed
(default
is
newline)
Python 2: print "The answer is", # comma suppresses newline print 42 Python 3: print("The answer is", end= ) print(42) Output: The answer is 42 Python 3: print("01","12","1981",sep=-) Output: 01-12-1981
If
you
are
familiar
with
the
print()
function
in
Python
3,
you
can
still
choose
to
use
it
when
coding
in
Python
2
by
using
the
__future__
module.
from future import print_function
2. Division
int/int
always
returns
and
int
in
Python
2,
truncating
the
result
if
its
not
a
whole
number.
In
order
to
get
a
float
result
from
division
you
must
have
at
least
one
float
argument.
int/int
always
returns
a
float
in
Python
3,
even
if
the
result
is
a
whole
number.
In
Python
3
int//int
always
returns
an
int,
truncating
the
result
if
its
not
a
whole
number,
in
the
same
way
a
single
/
works
in
Python
2.
Python Python Python Python Python Python Python Python 2: 2: 2: 2: 3: 3: 3: 3: 4/3 3/3 4.0/3 3.0/3 4/3 3/3 4//3 3//3 # # # # # # # # result result result result result result result result is is is is is is is is 0 1 1.33333 1.0 1.33333 1.0 1 1
Once
again
you
can
use
the
division
operator
from
Python
3
in
Python
2
by
importing
it
from
the
__future__
module.
from future import division
3. Input
The
raw_input()
function
in
Python
2
is
equivalent
to
input()
in
Python
3.
These
functions
always
return
user
input
as
a
STRING,
which
must
be
converted
if
you
want
a
different
type.
In
the
Zelle
Python
3
textbook
you
will
often
see
eval(input())
as
a
method
to
get
user
input
as
something
other
than
a
string,
however
you
SHOULD
NOT
use
this.
EVER.
Or
at
least
in
this
class.
Instead
you
should
convert
the
input
to
the
exact
type
you
wish.
Python 2: the_input = raw_input() Python 3: the_input = input() Python Python Python Python 2: 3: 2: 3: the_input the_input the_input the_input = = = = # the_input is of type string # the_input is of type string # # # # the_input the_input the_input the_input is is is is of of of of type type type type float float int int
# DONT USE
4. Files
The
file command
in
Python
2
is
removed
in
Python
3,
you
have
to
use
the
open()
function
instead.
Python 2: for line in file(my_file.txt): print line Python 3: myFile = open(my_file.txt,r): for line in myFile: print line
5. Range
The
range()
function
in
Python
3
is
like
xrange()
in
Python
2,
it
does
not
return
a
list
and
can
handle
an
arbitrarily
large
value.
Python 2: L = range(10) # L is [0,1,2,3,4,5,6,7,8,9] Python 3: L = list(range(10)) # L is [0,1,2,3,4,5,6,7,8,9] # The following causes an error in Python 2 but is valid in Python 3 for i in range(1000000000000):