String substitution VS proper mysql escaping

Tim Chase python.list at tim.thechases.com
Thu Aug 19 07:32:55 EDT 2010


On 08/19/10 02:10, Νίκος wrote:
>> ("nikos",) is a single element tuple.
>> ["nikos"] is a single element list.
>> ["nikos",] is also a single element list, just written like the tuple.
>
> It makes more sense if i:
>
> "nikos" is just a string
> ("nikos") is a single element tuple
> ["nikos"] is also a single element list
>
> After all () used to define tuples and [] usedd to define lists. Why
> commas?

You have to look at the other side:  what *else* they're used 
for.  Python also uses () to override order of operations (and to 
call functions, but that's contextually different) which can 
occur in the same context as tuples, while [] are used only 
within contexts where they can be disambiguated.  Going back to 
one of the originals example posted in this thread:

   (1) + (2)

do you think this should yield (1, 2) or 3?  It would be crazy if 
evaluation of

   (3*14) + (7*21)

was reduced, treated as "(42) + (147)" and then reduced to 
"(42,147)" instead of 189.

So Python needs a way to express that you *explicitly* mean "this 
is one of those rare one-element tuples, not an order of 
operations prioritization":

   (1,) + (2,)

to return "(1,2)"

> Also is there a difference between 'nikos' or "nikos" or '''nikos''' ?
> What's and why best to use to enclose strings?

Internally, there's no difference other than how easily you can 
include " or ' characters in your string.  Thus you might write:

   with_dquote = 'He said "Hello"'
   with_apos = "It's 2:00am"
   with_both1 = """She said "Don't touch me" to her boss"""
   with_both2 = '''She said "Don't touch me" to her boss'''

You can also prefix any of them with "r" such as

   file_path = r"c:\path\to\file.txt"
   file_path = r'c:\path\to\file.txt
   file_path = r"""c:\path\to\file.txt"""
   file_path = r'''c:\path\to\file.txt'''

to alter how "\" are treated.

Otherwise, if it doesn't make a difference, I tend to use C-ish 
conventions of using " for strings and ' for single characters:

   if 'w' in "hello world":

but the important/kind thing is to be internally consistent to 
make your own life easier. :)

-tkc








More information about the Python-list mailing list