[Python-3000] PEP 3101 Updated
Eric Smith
eric+python-dev at trueblade.com
Wed Aug 15 19:02:55 CEST 2007
James Thiele wrote:
> I think the example:
>
> "My name is {0.name}".format(file('out.txt'))
>
> Would be easier to understand if you added:
>
> Which would produce:
>
> "My name is 'out.txt'"
I agree.
Also, the example a couple of paragraphs down:
"My name is {0[name]}".format(dict(name='Fred'))
should show the expected output:
"My name is Fred"
I was adding test cases from the PEP last night, and I ignored the file
one because I didn't want to mess with files. I've looked around for a
replacement, but I couldn't find a built in type with an attribute that
would be easy to test. Maybe we could stick with file, and use sys.stdin:
"File name is {0.name}".format(sys.stdin)
which would produce:
'File name is 0'
I don't know if the "0" is platform dependent or not. If anyone has an
example of a builtin (or standard module) type, variable, or whatever
that has an attribute that can have a known value, I'd like to see it.
When working on this, I notice that in 2.3.3 (on the same machine),
sys.stdin.name is '<stdin>', but in py3k it's 0. Not sure if that's a
bug or intentional.
In any event, if we leave this example in the PEP, not only should we
include the expected output, it should probably be changed to use "open"
instead of "file":
"My name is {0.name}".format(open('out.txt'))
since I think file(filename) is deprecated (but still works). At least
I thought it was deprecated, now that I look around I can't find any
mention of it.
Eric.
More information about the Python-3000
mailing list