[Python-3000] features i'd like [Python 3000?] ... #4: interpolated strings ala perl (original) (raw)
Jan Grant jan.grant at bristol.ac.uk
Wed Dec 6 11:24:20 CET 2006
- Previous message: [Python-3000] features i'd like [Python 3000?] ... #4: interpolated strings ala perl
- Next message: [Python-3000] Changing the % format return type Re: features i'd like [Python 3000?] ... #4: interpolated strings ala perl
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 6 Dec 2006, Ka-Ping Yee wrote:
[well-articulated point made]
Thank-you: I agree with pretty much everything you say. It's an interesting question to ask, "can one construct a convenient interpolation mechanism that uses the appropriate application quoting mechanisms where necessary?"
If i understand you correctly, your argument is:
Many people use simple string interpolation when they should be using an application-specific quoting mechanism. Therefore string interpolation should be inconvenient.
Actually, "unavailable", but yup :-)
Therefore application-specific quoting mechanisms should be more convenient to create and use.
Agreed, if this is possible whilst remaining "Pythonic".
Where does this design constraint take us?
One possibility it suggests is that the interpolation function could be generic, allowing the formatting template to be of a custom type that supports application-specific quoting. If we go this route, that would argue in favour of solutions like a method on the template object or an infix operator, and would reject solutions like a built-in interpolated string type.
That's pretty much the conclusion I'd come to...
Another possibility is that the interpolation function, if a built-in, could be overridable.
I think the question here is, is there a safe, convenient way that Python can determine what to do (or be told what to do) when it sees:
s = "some string here with {variable} in it"
If you have a good approach to the second possibility then I'd be very interested.
Cheers, jan
PS. IF generic functions (operators) could be sensitive to return types and IF python6k supported a complex type inference mechanism (possibly including automatic coercion), then one might be able to do something like:
def foo(d: sqlDriver): s = "select template goes here" % (param1, param2) r = d.query(s)
where sqlDriver has a method
def query(self, s: some_type_that_signals_sql_interpolation)
and "%" is overloadable on the basis that the return type is determined to be compatible with "some_type_that_signals_sql_interpolation". Those are some mighty big "IF"s though, and you could still concoct cases where things would break :-)
-- jan grant, ISYS, University of Bristol. http://www.bris.ac.uk/ Tel +44 (0)117 3317661 http://ioctl.org/jan/ The Java disclaimer: values of 'anywhere' may vary between regions.
- Previous message: [Python-3000] features i'd like [Python 3000?] ... #4: interpolated strings ala perl
- Next message: [Python-3000] Changing the % format return type Re: features i'd like [Python 3000?] ... #4: interpolated strings ala perl
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]