python 3's adoption
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Wed Jan 27 20:09:58 EST 2010
On Wed, 27 Jan 2010 00:36:52 -0800, Paul Rubin wrote:
> Steven D'Aprano <steven at REMOVE.THIS.cybersource.com.au> writes:
>> Without becoming a purely functional language, you won't get rid of all
>> statements.
>
> Why not? GCC lets you use any statement in an expression:
I stand corrected. Whether it is a good idea or not is another story.
>> for, while, if, try, break, yield, return are all used for flow
>> control, and should remain as statements.
>
> What about assert, import, and pass?
Both assert and pass are special and need to be treated specially by the
compiler. Arguably we could replace pass with None, but pass makes the
intent more obvious.
Although assert could be a function, it is treated specially by the
compiler and so making it a statement emphases that it is special.
The regular form of import could easily be a function returning the
module object. After all, that's exactly what __import__ is! But using
__import__ for anything but the simplest cases is quite awkward, hence we
have syntactic sugar in the form of the import statement.
You also missed del as another statement-based command.
All the current statements have good strong reasons for being statements.
print on the other hand lacks a strong reason for being a statement, and
the only good argument against changing is to avoid an incompatible
change. But since it is not a gratuitous incompatible change, the long
term benefit out-weighs the short-term pain, in my opinion.
--
Steven
More information about the Python-list
mailing list