diff --git a/porting-code-to-python-3-with-2to3.html b/porting-code-to-python-3-with-2to3.html index 3641b35..0a33ddd 100644 --- a/porting-code-to-python-3-with-2to3.html +++ b/porting-code-to-python-3-with-2to3.html @@ -549,7 +549,7 @@ for an_iterator in a_sequence_of_iterators:
map() returns an iterator as if it returns a list.
-reduce() global function (3.1+)reduce() global functionIn Python 3, the reduce() function has been removed from the global namespace and placed in the functools module.
@@ -563,10 +563,6 @@ for an_iterator in a_sequence_of_iterators:
reduce(a, b, c)
-
--☞The version of
2to3that shipped with Python 3.0 would not fix thereduce()function automatically. The fix first appeared in the2to3script that shipped with Python 3.1. -
apply() global functionPython 2 had a global function called apply(), which took a function f and a list [a, b, c] and returned f(a, b, c). You can accomplish the same thing by calling the function directly and passing it the list of arguments preceded by an asterisk. In Python 3, the apply() function no longer exists; you must use the asterisk notation.
@@ -634,7 +630,7 @@ reduce(a, b, c)
exec statement could also take a local namespace (like the variables defined within a function). In Python 3, the exec() function can do that too.
-execfile statement (3.1+)execfile statementLike the old exec statement, the old execfile statement will execute strings as if they were Python code. Where exec took a string, execfile took a filename. In Python 3, the execfile statement has been eliminated. If you really need to take a file of Python code and execute it (but you’re not willing to simply import it), you can accomplish the same thing by opening the file, reading its contents, calling the global compile() function to force the Python interpreter to compile the code, and then call the new exec() function.
@@ -647,10 +643,6 @@ reduce(a, b, c)
exec(compile(open('a_filename').read(), 'a_filename', 'exec'))
---☞The version of
2to3that shipped with Python 3.0 would not fix theexecfilestatement automatically. The fix first appeared in the2to3script that shipped with Python 3.1. -
repr literals (backticks)In Python 2, there was a special syntax of wrapping any object in backticks (like `x`) to get a representation of the object. In Python 3, this capability still exists, but you can no longer use backticks to get it. Instead, use the global repr() function.
@@ -1131,7 +1123,7 @@ except:
☞types.StringType gets mapped to bytes instead of str because a Python 2 “string” (not a Unicode string, just a regular string) is really just a sequence of bytes in a particular character encoding.
-
isinstance() global function (3.1+)isinstance() global functionThe isinstance() function checks whether an object is an instance of a particular class or type. In Python 2, you could pass a tuple of types, and isinstance() would return True if the object was any of those types. In Python 3, you can still do this, but passing the same type twice is deprecated.
@@ -1144,10 +1136,6 @@ except:
isinstance(x, (int, float))
---☞The version of
2to3that shipped with Python 3.0 would not fix these cases ofisinstance()automatically. The fix first appeared in the2to3script that shipped with Python 3.1. -
basestring datatypePython 2 had two string types: Unicode and non-Unicode. But there was also another type, basestring. It was an abstract type, a superclass for both the str and unicode types. It couldn’t be called or instantiated directly, but you could pass it to the global isinstance() function to check whether an object was either a Unicode or non-Unicode string. In Python 3, there is only one string type, so basestring has no reason to exist.