[Python-Dev] Python 3 design principles (original) (raw)
Ron Adam rrr at ronadam.com
Thu Sep 1 23:00:51 CEST 2005
- Previous message: [Python-Dev] Replacement for print in Python 3.0
- Next message: [Python-Dev] Python 3 design principles
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] Replacement for print in Python 3.0
- Next message: [Python-Dev] Python 3 design principles
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]