Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #89548 > unrolled thread
| Started by | Cecil Westerhof <Cecil@decebal.nl> |
|---|---|
| First post | 2015-04-29 14:42 +0200 |
| Last post | 2015-04-29 23:51 +0200 |
| Articles | 7 — 3 participants |
Back to article view | Back to comp.lang.python
implicitly concats of adjacent strings does not work with format Cecil Westerhof <Cecil@decebal.nl> - 2015-04-29 14:42 +0200
Re: implicitly concats of adjacent strings does not work with format Dave Angel <davea@davea.name> - 2015-04-29 09:14 -0400
Re: implicitly concats of adjacent strings does not work with format Cecil Westerhof <Cecil@decebal.nl> - 2015-04-29 16:40 +0200
Re: implicitly concats of adjacent strings does not work with format Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-04-29 17:04 +0100
Re: implicitly concats of adjacent strings does not work with format Cecil Westerhof <Cecil@decebal.nl> - 2015-04-29 19:08 +0200
Re: implicitly concats of adjacent strings does not work with format Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-04-29 21:51 +0100
Re: implicitly concats of adjacent strings does not work with format Cecil Westerhof <Cecil@decebal.nl> - 2015-04-29 23:51 +0200
| From | Cecil Westerhof <Cecil@decebal.nl> |
|---|---|
| Date | 2015-04-29 14:42 +0200 |
| Subject | implicitly concats of adjacent strings does not work with format |
| Message-ID | <877fsvcdhz.fsf@Equus.decebal.nl> |
I have the folowing print statements:
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'fibonacci_memoize once for {0} '.format(large_fibonacci))
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'fibonacci_memoize once for {0} '.format(large_fibonacci) +
'to determine speed increase')
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'to determine speed increase'
'fibonacci_memoize once for {0} '.format(large_fibonacci))
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'fibonacci_memoize once for {0} '.format(large_fibonacci)
'to determine speed increase')
The first three work, but the last gives:
'to determine speed increase')
^
SyntaxError: invalid syntax
Not very important, because I can use the second one, but I was just
wondering why it goes wrong.
--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof
[toc] | [next] | [standalone]
| From | Dave Angel <davea@davea.name> |
|---|---|
| Date | 2015-04-29 09:14 -0400 |
| Message-ID | <mailman.86.1430313312.3680.python-list@python.org> |
| In reply to | #89548 |
On 04/29/2015 08:42 AM, Cecil Westerhof wrote:
> I have the folowing print statements:
> print(
> 'Calculating fibonacci_old, fibonacci_memoize and '
> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>
>
> print(
> 'Calculating fibonacci_old, fibonacci_memoize and '
> 'fibonacci_memoize once for {0} '.format(large_fibonacci) +
> 'to determine speed increase')
>
> print(
> 'Calculating fibonacci_old, fibonacci_memoize and '
> 'to determine speed increase'
> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>
>
> print(
> 'Calculating fibonacci_old, fibonacci_memoize and '
> 'fibonacci_memoize once for {0} '.format(large_fibonacci)
> 'to determine speed increase')
>
> The first three work, but the last gives:
> 'to determine speed increase')
> ^
> SyntaxError: invalid syntax
>
> Not very important, because I can use the second one, but I was just
> wondering why it goes wrong.
>
Adjacent string literals are concatenated. But once you've called a
method (.format()) on that literal, you now have an expression, not a
string literal.
You could either change the last line to
+ 'to determine speed increase')
or you could concatenate all the strings before calling the format method:
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'fibonacci_memoize once for {0} '
'to determine speed increase' .format(large_fibonacci))
Something you may not realize is that the addjacent-concatenation occurs
at compile time, so your third example could be transformed from:
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'to determine speed increase'
'fibonacci_memoize once for {0} '.format(large_fibonacci))
to:
print(
'Calculating fibonacci_old, fibonacci_memoize and '
'to determine speed increase'
'fibonacci_memoize once for {0}'
' '.format(large_fibonacci))
All three literals are combined before format() is called. Knowing this
could be vital if you had {} elsewhere in the 9single) literal.
--
DaveA
[toc] | [prev] | [next] | [standalone]
| From | Cecil Westerhof <Cecil@decebal.nl> |
|---|---|
| Date | 2015-04-29 16:40 +0200 |
| Message-ID | <87383jc80w.fsf@Equus.decebal.nl> |
| In reply to | #89551 |
Op Wednesday 29 Apr 2015 15:14 CEST schreef Dave Angel:
> On 04/29/2015 08:42 AM, Cecil Westerhof wrote:
>> I have the folowing print statements:
>> print(
>> 'Calculating fibonacci_old, fibonacci_memoize and '
>> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>>
>>
>> print(
>> 'Calculating fibonacci_old, fibonacci_memoize and '
>> 'fibonacci_memoize once for {0} '.format(large_fibonacci) +
>> 'to determine speed increase')
>>
>> print(
>> 'Calculating fibonacci_old, fibonacci_memoize and '
>> 'to determine speed increase'
>> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>>
>>
>> print(
>> 'Calculating fibonacci_old, fibonacci_memoize and '
>> 'fibonacci_memoize once for {0} '.format(large_fibonacci)
>> 'to determine speed increase')
>>
>> The first three work, but the last gives:
>> 'to determine speed increase')
>> ^
>> SyntaxError: invalid syntax
>>
>> Not very important, because I can use the second one, but I was
>> just wondering why it goes wrong.
>>
>
> Adjacent string literals are concatenated. But once you've called a
> method (.format()) on that literal, you now have an expression, not
> a string literal.
>
> You could either change the last line to
>
> + 'to determine speed increase')
>
> or you could concatenate all the strings before calling the format
> method:
>
>
> print(
> 'Calculating fibonacci_old, fibonacci_memoize and '
> 'fibonacci_memoize once for {0} '
> 'to determine speed increase' .format(large_fibonacci))
I now use this, I did not know that the addjacent-concatenation
occurred at compile time.
I spend a ‘little‘ time, but it was worth it.
From the amount of messages you could think I am a spammer. ;-)
--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof
[toc] | [prev] | [next] | [standalone]
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Date | 2015-04-29 17:04 +0100 |
| Message-ID | <mailman.87.1430323506.3680.python-list@python.org> |
| In reply to | #89553 |
On 29/04/2015 15:40, Cecil Westerhof wrote:
> Op Wednesday 29 Apr 2015 15:14 CEST schreef Dave Angel:
>
>> On 04/29/2015 08:42 AM, Cecil Westerhof wrote:
>>> I have the folowing print statements:
>>> print(
>>> 'Calculating fibonacci_old, fibonacci_memoize and'
>>> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>>>
>>>
>>> print(
>>> 'Calculating fibonacci_old, fibonacci_memoize and'
>>> 'fibonacci_memoize once for {0} '.format(large_fibonacci) +
>>> 'to determine speed increase')
>>>
>>> print(
>>> 'Calculating fibonacci_old, fibonacci_memoize and'
>>> 'to determine speed increase'
>>> 'fibonacci_memoize once for {0} '.format(large_fibonacci))
>>>
>>>
>>> print(
>>> 'Calculating fibonacci_old, fibonacci_memoize and'
>>> 'fibonacci_memoize once for {0} '.format(large_fibonacci)
>>> 'to determine speed increase')
>>>
>>> The first three work, but the last gives:
>>> 'to determine speed increase')
>>> ^
>>> SyntaxError: invalid syntax
>>>
>>> Not very important, because I can use the second one, but I was
>>> just wondering why it goes wrong.
>>>
>>
>> Adjacent string literals are concatenated. But once you've called a
>> method (.format()) on that literal, you now have an expression, not
>> a string literal.
>>
>> You could either change the last line to
>>
>> + 'to determine speed increase')
>>
>> or you could concatenate all the strings before calling the format
>> method:
>>
>>
>> print(
>> 'Calculating fibonacci_old, fibonacci_memoize and'
>> 'fibonacci_memoize once for {0}'
>> 'to determine speed increase' .format(large_fibonacci))
>
> I now use this, I did not know that the addjacent-concatenation
> occurred at compile time.
> I spend a ‘little‘ time, but it was worth it.
>
> From the amount of messages you could think I am a spammer. ;-)
>
Did you mean spanner? ;-)
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
[toc] | [prev] | [next] | [standalone]
| From | Cecil Westerhof <Cecil@decebal.nl> |
|---|---|
| Date | 2015-04-29 19:08 +0200 |
| Message-ID | <87twvyc164.fsf@Equus.decebal.nl> |
| In reply to | #89557 |
Op Wednesday 29 Apr 2015 18:04 CEST schreef Mark Lawrence: >> From the amount of messages you could think I am a spammer. ;-) >> > > Did you mean spanner? ;-) My English is not good enough to understand what you mean by this. -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof
[toc] | [prev] | [next] | [standalone]
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Date | 2015-04-29 21:51 +0100 |
| Message-ID | <mailman.96.1430340689.3680.python-list@python.org> |
| In reply to | #89559 |
On 29/04/2015 18:08, Cecil Westerhof wrote: > Op Wednesday 29 Apr 2015 18:04 CEST schreef Mark Lawrence: > >>> From the amount of messages you could think I am a spammer. ;-) >>> >> >> Did you mean spanner? ;-) > > My English is not good enough to understand what you mean by this. > Seek, and ye shall find. <quote> (UK, mildly derogatory) A stupid or unintelligent person; one prone to making mistakes, especially in language. You spanner, Rodney! I wanted a Chinese, not an Indian! </quote> Nothing personal in this, I simply find the homour here often more interesting than the theoretical claptrap that some go on about. Not only that, from the Zen of Python, "Practicality beats purity". As for being a spammer, nonsense, it's rather pleasant to see someone with real code asking real questions. Carry on like this and you'll soon be on the bug tracker at bugs.python.org fixing things, instead of the throngs who simply love complaining, but in reality do nothing about it. Hint, hint, didn't you ask on another thread about what module you could write for Python :) -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence
[toc] | [prev] | [next] | [standalone]
| From | Cecil Westerhof <Cecil@decebal.nl> |
|---|---|
| Date | 2015-04-29 23:51 +0200 |
| Message-ID | <878udabo2s.fsf@Equus.decebal.nl> |
| In reply to | #89575 |
Op Wednesday 29 Apr 2015 22:51 CEST schreef Mark Lawrence: > On 29/04/2015 18:08, Cecil Westerhof wrote: >> Op Wednesday 29 Apr 2015 18:04 CEST schreef Mark Lawrence: >> >>>> From the amount of messages you could think I am a spammer. ;-) >>>> >>> >>> Did you mean spanner? ;-) >> >> My English is not good enough to understand what you mean by this. >> > > Seek, and ye shall find. > > <quote> (UK, mildly derogatory) A stupid or unintelligent person; > one prone to making mistakes, especially in language. You spanner, > Rodney! I wanted a Chinese, not an Indian! </quote> Well, I used Google (or rather DuckDuckGo) and did not find this one. > Nothing personal in this, I simply find the homour here often more > interesting than the theoretical claptrap that some go on about. Not > only that, from the Zen of Python, "Practicality beats purity". :-) > As for being a spammer, nonsense, it's rather pleasant to see > someone with real code asking real questions. Carry on like this and > you'll soon be on the bug tracker at bugs.python.org fixing things, > instead of the throngs who simply love complaining, but in reality > do nothing about it. Hint, hint, didn't you ask on another thread > about what module you could write for Python :) Fixing bugs is even better as writing modules. I would not mind if you would be right. :-D -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web