Size: 1753
Comment:
|
Size: 2341
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
= Main caveat = | = Main caveat from writing Python 3 Sagemath code when you are used to Python 2 = |
Line 5: | Line 5: |
We list the most visible changes that any user would certainly run into the first time she uses a Python 3 based version when she used to run a Python 2 based one. This page is not intended to be a complete manual of the differences but a short page of what you need to know to get started. The [[https://docs.python.org/3/whatsnew/3.0.html|What's new page of the Python official website]] provides more technical details. |
|
Line 18: | Line 20: |
Writing a print statement without the parenthesis will result in a `SyntaxError` | Writing a print statement without the parenthesis results in a `SyntaxError` |
Line 25: | Line 27: |
}}} One cool thing about this `print` function is that it takes argument {{{#highlight python |
Warning: |
Starting from version 9.0, the default distributed version of Sage is using Python 3. See Python3-Switch for more information. |
Main caveat from writing Python 3 Sagemath code when you are used to Python 2
We list the most visible changes that any user would certainly run into the first time she uses a Python 3 based version when she used to run a Python 2 based one. This page is not intended to be a complete manual of the differences but a short page of what you need to know to get started. The What's new page of the Python official website provides more technical details.
1. print
In Python 2, print is a keyword (as for, if, etc)
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 results in a SyntaxError {{{#highlight python sage: print "hello", 1, 2
File "<ipython-input-9-e91077222f2e>", line 1
- print "hello", Integer(1), Integer(2)
- ^
- print "hello", Integer(1), Integer(2)
SyntaxError: invalid syntax }}} One cool thing about this print function is that it takes argument {{{#highlight python
}}}
2. range and xrange
In Python range is a function that returns a list.
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.
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).