jagomart
digital resources
picture1_Python Pdf 186146 | 1 Item Download 2023-02-01 23-21-02


 126x       Filetype PDF       File size 0.28 MB       Source: link.springer.com


File: Python Pdf 186146 | 1 Item Download 2023-02-01 23-21-02
a p p e n d i x a porting code to python 3 with 2to3 virtually all python 2 programs need at least some tweaking to run properly under ...

icon picture PDF Filetype PDF | Posted on 01 Feb 2023 | 2 years ago
Partial capture of text on file.
                   A P P E N D I X  A 
                   ■ ■ ■      
                   Porting Code to Python 3 with 2to3 
                   Virtually all Python 2 programs need at least some tweaking to run properly under Python 3. To help 
                   with this transition, Python 3 comes with a utility script called 2to3, which takes your actual Python 2 
                   source code as input and auto-converts as much as it can to Python 3. Chapter 15 described how to run 
                   the 2to3 script and showed some things it can’t fix automatically. This appendix documents what it can 
                   fix automatically. 
                   print Statement 
                   In Python 2, print was a statement. Whatever you wanted to print simply followed the print keyword. In 
                   Python 3, print() is a function. Whatever you want to print, pass it to print() like any other function, as 
                   shown in Table A-1. 
                   Table A-1. The print() Statement 
                   Notes   Python 2                                    Python 3  
                   (1)       print                                     print()  
                   (2)       print 1                                   print(1)  
                   (3)       print 1, 2                                print(1, 2)  
                   (4)       print 1, 2,                               print(1, 2, end=' ')  
                   (5)       print >>sys.stderr, 1, 2, 3  print(1, 2, 3, file=sys.stderr) 
                            1.    To print a blank line, call print() without any arguments. 
                            2.    To print a single value, call print() with one argument. 
                            3.    To print two values separated by a space, call print() with two arguments. 
                                                                                                                                                           295 
                    
                    APPENDIX A ■ PORTING CODE TO PYTHON 3 WITH 2TO3 
                     
                              4.    This one is a little tricky. In Python 2, if you ended a print statement with a 
                                    comma, it would print the values separated by spaces, print a trailing space, 
                                    and then stop without printing a carriage return. In Python 3, the way to do 
                                    this is to pass end=' ' as a keyword argument to the print() function. The end 
                                    argument defaults to '\n' (a carriage return), so overriding it will suppress the 
                                    carriage return after printing the other arguments. 
                              5.    In Python 2, you could redirect the output to a pipe (such as sys.stderr) by 
                                    using the >>pipe_name syntax. In Python 3, the way to do this is to pass the pipe 
                                    in the file keyword argument. The file argument defaults to sys.stdout 
                                    (standard out), so overriding it will output to a different pipe instead. 
                    Unicode String Literals 
                    Python 2 had two string types: Unicode strings and non-Unicode strings. Python 3 has one string type: 
                    Unicode strings, as shown in Table A-2. 
                    Table A-2. Unicode String Literals 
                    Notes   Python 2                          Python 3  
                    (1)        u'PapayaWhip'                  'PapayaWhip'  
                    (2)        ur'PapayaWhip\foo'  r'PapayaWhip\foo' 
                              1.    Unicode string literals are simply converted into string literals, which are 
                                    always Unicode in Python 3. 
                              2.    Unicode raw strings (in which Python does not auto-escape backslashes) are 
                                    converted to raw strings. In Python 3, raw strings are always Unicode. 
                    unicode() Global Function 
                    Python 2 had two global functions to coerce objects into strings: unicode() to coerce them into Unicode 
                    strings and str() to coerce them into non-Unicode strings. Python 3 has only one string type, Unicode 
                    strings, so the str() function is all you need. (The unicode() function no longer exists.) See Table A-3. 
             296 
                     
                                                                                      APPENDIX A ■ PORTING CODE TO PYTHON 3 WITH 2TO3 
                 
                Table A-3. The unicode() Global Function 
                Python 2                Python 3  
                unicode(anything)  str(anything)  
                long Datatype 
                Python 2 had separate int and long types for non-floating-point numbers. An int could not be any 
                larger than sys.maxint, which varied by platform. Longs were defined by appending an L to the end of 
                the number, and they could be, well, longer than ints. In Python 3, there is only one integer type, called 
                int, which mostly behaves like the long type in Python 2. Because there are no longer two types, there is 
                no need for special syntax to distinguish them (see Table A-4). 
                Table A-4. long Datatypes 
                Notes   Python 2                   Python 3  
                (1)      x = 1000000000000L        X = 1000000000000  
                (2)      x = 0xFFFFFFFFFFFFL   x = 0xFFFFFFFFFFFF 
                (3)      long(x)                   int(x)  
                (4)      type(x) is long           type(x) is int  
                (5)      isinstance(x, long)   isinstance(x, int) 
                        1.   Base 10 long integer literals become base 10 integer literals. 
                        2.   Base 16 long integer literals become base 16 integer literals. 
                        3.   In Python 3, the old long() function no longer exists because longs don’t exist. 
                             To coerce a variable to an integer, use the int() function. 
                        4.   To check whether a variable is an integer, get its type and compare it with int, 
                             not long. 
                        5.   You can also use the isinstance() function to check datatypes; again, use int, 
                             not long, to check for integers. 
                <> Comparison 
                Python 2 supported <> as a synonym for !=, the not-equals comparison operator. Python 3 supports the 
                != operator, but not <>, as shown in Table A-5. 
                                                                                                                                     297 
                 
                APPENDIX A ■ PORTING CODE TO PYTHON 3 WITH 2TO3 
                 
                Table A-5. <> Comparison 
                Notes   Python 2             Python 3  
                (1)     if x <> y:           if x != y:  
                (2)     if x <> y <> z:  if x != y != z: 
                       1.   This is a simple comparison between two values. 
                       2.   This is a more complex comparison between three values. 
                has_key() Dictionary Method 
                In Python 2, dictionaries had a has_key() method to test whether the dictionary had a certain key. In 
                Python 3, this method no longer exists. Instead, you need to use the in operator. (See Table A-6.) 
                Table A-6. has_key() Dictionary Method 
                Notes   Python 2                                   Python 3  
                (1)     a_dictionary.has_key('PapayaWhip')  'PapayaWhip' in a_dictionary  
                (2)     a_dictionary.has_key(x) or                 x in a_dictionary or y in a_dictionary  
                        a_dictionary.has_key(y)  
                (3)     a_dictionary.has_key(x or y)               (x or y) in a_dictionary  
                (4)     a_dictionary.has_key(x + y)                (x + y) in a_dictionary  
                (5)     x + a_dictionary.has_key(y)                x + (y in a_dictionary)  
                       1.   The simplest form. 
                       2.   The in operator takes precedence over the or operator, so there is no need for 
                            parentheses here. 
                       3.   On the other hand, you do need parentheses here, for the same reason: in 
                            takes precedence over or. Note that this code is completely different from the 
                            previous line. Python interprets x or y first, which results in either x (if x is 
                            true in a Boolean context) or y. Then it takes that singular value and checks 
                            whether it is a key in a_dictionary. 
                       4.   The in operator takes precedence over the + operator, so this form technically 
                            doesn’t need parentheses, but 2to3 includes them anyway. 
                       5.   This form definitely needs parentheses because the in operator takes 
                            precedence over the + operator. 
          298 
                 
The words contained in this file might help you see if this file matches what you are looking for:

...A p e n d i x porting code to python with virtually all programs need at least some tweaking run properly under help this transition comes utility script called which takes your actual source as input and auto converts much it can chapter described how the showed things t fix automatically appendix documents what print statement in was whatever you wanted simply followed keyword is function want pass like any other shown table notes end sys stderr file blank line call without arguments single value one argument two values separated by space little tricky if ended comma would spaces trailing then stop printing carriage return way do defaults so overriding will suppress after could redirect output pipe such using name syntax stdout standard out different instead unicode string literals had types strings non has type u papayawhip ur foo r are converted into always raw does not escape backslashes global functions coerce objects them str only no longer exists see anything long datatype sepa...

no reviews yet
Please Login to review.