Documentation, assignment in expression.
mwilson at the-wire.com
mwilson at the-wire.com
Sun Mar 25 19:09:12 EDT 2012
Tim Chase wrote:
> On 03/25/12 08:11, Chris Angelico wrote:
>> On Mon, Mar 26, 2012 at 12:03 AM, Tim Chase
>> <python.list at tim.thechases.com> wrote:
>>> Granted, this can be turned into an iterator with a yield, making the
>>> issue somewhat moot:
>>
>> No, just moving the issue to the iterator. Your iterator has exactly
>> the same structure in it.
>
> Yeah, it has the same structure internally, but I'm somewhat
> surprised that the DB connection object doesn't have an
> __iter__() that does something like this automatically under the
> covers.
Most of my database programs wind up having the boilerplate (not tested):
def rowsof (cursor):
names = [x[0] for x in cursor.description]
r = cursor.fetchone()
while r:
yield dict (zip (names, r))
r = cursor.fetchone()
Mel.
>
>> Personally, I quite like assignment-in-conditional notation. Yes, it's
>> a pretty common cause of problems; but what happened to the
>> "consenting adults" policy? Python permits operator overloading and
>> even the reassignment of builtins, both of which can cause similar
>> confusion.
>
> In my past years of C programming, I've accidentally omitted the
> second "=" in a comparison test numerous times, requiring me to
> track down the missing character. When I finally catch it, it's
> obvious what the problem is, but I've come to love having Python
> yell at me contextually.
>
>> But, that's the choice Python's made. And being able to use the same
>> symbol for assignment and comparison does have its advantages.
>
> The old curmudgeon in me likes the Pascal method of using "=" for
> equality-testing, and ":=" for assignment which feels a little
> closer to mathematical use of "=".
>
> -tkc
More information about the Python-list
mailing list