Processing Math: Done
jsMath
Differences between revisions 5 and 6
Revision 5 as of 2019-10-31 06:03:24
Size: 1211
Editor: vdelecroix
Comment:
Revision 6 as of 2019-10-31 06:06:00
Size: 1753
Editor: vdelecroix
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
== range and xrange == == 1. print ==

In Python 2, `print` is a keyword (as `for`, `if`, etc)
{{{#!highlight python
sage-8.9: print "hello", 1, 2
hello 1 2
}}}

In Python 3, `print` becomes a function
{{{#highlight python
sage-9.0: print("hello", 1, 2)
hello 1 2
}}}
Writing a print statement without the parenthesis will result in a `SyntaxError`
{{{#highlight python
sage: print "hello", 1, 2
  File "<ipython-input-9-e91077222f2e>", line 1
    print "hello", Integer(1), Integer(2)
                ^
SyntaxError: invalid syntax
}}}

== 2. range and xrange ==
Line 28: Line 50:
== strings, unicode and bytes == == 3. strings, unicode and bytes ==

Warning:

Starting from version 9.0, the default distributed version of Sage is using Python 3. See Python3-Switch for more information.

Main caveat

1. print

In Python 2, print is a keyword (as for, if, etc)

Toggle line numbers
   1 sage-8.9: print "hello", 1, 2
   2 hello 1 2

In Python 3, print becomes a function {{{#highlight python sage-9.0: print("hello", 1, 2) hello 1 2 }}} Writing a print statement without the parenthesis will result in a SyntaxError {{{#highlight python sage: print "hello", 1, 2

  • File "<ipython-input-9-e91077222f2e>", line 1

    • print "hello", Integer(1), Integer(2)
      • ^

SyntaxError: invalid syntax }}}

2. range and xrange

In Python range is a function that returns a list.

Toggle line numbers
   1 sage-8.9: range(5)
   2 [0, 1, 2, 3, 4]
   3 sage-8.9: type(range(5))
   4 <type 'list'>

In Python 3, range is an object that somehow behave as a list (ie elements can still be acessed with square bracket, it has a length, etc) but it is not a list.

Toggle line numbers
   1 sage-9.0: range(5)
   2 range(0, 5)
   3 sage-9.0: range(5)[2]
   4 2
   5 sage-9.0: range(5)[1::2]
   6 range(1, 5, 2)
   7 sage-9.0: type(range(5))
   8 <class 'range'>

The iterator xrange is no longer valid in Python 3 simply use range instead.

3. strings, unicode and bytes

In Python 2 a chain of characters between simple, double or triple quotes creates an ascii string. To create a unicode string one has to use the prefix u (which remains valid in Python 3).

In Python 3, a chain of characters between quote will gives rise to a unicode string. To create specifically an ascii string one has to use the prefix b (which is already valid in Python 2).

Python3-user (last edited 2020-01-02 08:29:00 by chapoton)