[Python-Dev] Suggested changes to PEP 215

Jason Orendorff jason@jorendorff.com
2002年1月14日 20:25:18 -0600


One of the examples in PEP 215 is a bit wrong, I think.
 >>> print $'\$a'
 5
This should output a backslash before the 5, because the
string '\$a' has a backslash character in it.
Also, for clarity, PEP 215 should explicitly specify
that the substitution only occurs once. For example:
 # Existing examples
 >>> a, b = 5, 6
 >>> print $'a = $a, b = $b'
 a = 5, b = 6
 [...]
 
 >>> x = "$a"
 >>> print $'x = $x'
 x = $a
Maybe there should also be examples demonstrating that $-strings
adopt the local namespace.
Also, the PEP says:
] $'a = $a, b = $b'
]
] could be compiled as though it were the expression
]
] ('a = ' + str(a) + ', b = ' + str(b))
Consider:
 def f(str):
 # The argument 'str' masks the builtin str() function.
 a, b = find_stuff(str)
 print $'a = $a, b = $b'
 return a, b
It should be specified that $-strings do not use the local
"str" and "unicode" names to find str() and unicode(); nor
do they look in the current __builtins__ or the __builtin__
module. They should use the actual python C implementations
of str() and unicode(). This can be implemented by putting
a direct reference to str or unicode in the co_consts tuple
of the code object; I don't know how else the author plans
to deal with this.
## Jason Orendorff http://www.jorendorff.com/

AltStyle によって変換されたページ (->オリジナル) /