[Python-Dev] Python 3 design principles
Ron Adam
rrr at ronadam.com
Thu Sep 1 23:00:51 CEST 2005
Reinhold Birkenfeld wrote:
> Greg Ewing wrote:
>
>>Charles Cazabon wrote:
>>
>>
>>>Perhaps py3k could have a py2compat module. Importing it could have the
>>>effect of (for instance) putting compile, id, and intern into the global
>>>namespace, making print an alias for writeln,
>>
>>There's no way importing a module could add something that
>>works like the old print statement, unless some serious
>>magic is going on...
>
>
> You'd have to enclose print arguments in parentheses. Of course, the "trailing
> comma" form would be lost.
>
> Reinhold
The trailing comma is convenient, but I don't think it's that big of a
deal to have two methods.
ui.write()
ui.writeln() # or ui.print()
I'm +1 on making it a method of a "user interface object". Not just a
function.
I want to be able to import an interface, then communicate to it in a
consistent way even though it may look quite different on the screen.
Having a set of standard io methods moves in that direction I think.
import console
ui = console()
ui.write("Hello World\n")
howami = ui.input("How are you today? %s")
import popup
ui = popup('YesNo') # Create a 'YesNo' popup.
ok = ui.input('Ok to proceed?') # Open it and wait for it.
ok2 = ui.input('Are you sure?') # Reopen it and reuse it.
if ok == ok2 == 'Yes':
...
Some possible common methods...
ui.write(data) # non blocking print/output, doesn't wait
ui.send() # non echo write; passwords, config, etc..
ui.input(prompt) # output something and wait for return value
ui.get() # non echo wait for value, or io.next()
ui.read() # non blocking get
As for functions without '()'s. (Just a thought) You could use '<<' or
'<<<' (or other symbol) as a way to move data between objects.
ui.write <<< 'Hello World/n' # ui.write('Hello World/n')
ui.writeln <<< counter # ui.writeln(counter.next())
ok = ui.input <<< 'press a key:' # ok = ui.input('press a key:')
The requirement could be that the item on the left is a callable, and
the item on the right is a sequence or generator.
Cheers,
Ron
More information about the Python-Dev
mailing list