[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