Hi list!

I'm relatively new to Python, and one thing I can't seem to get over is
the lack of in-expression assignments, as present in many other
languages. I'd really like to know how Python regulars solve the
problems posed by that.

For example, I recently wanted to do this:

if callable(f = getattr(self, "cmd_" + name)):
        # Do something with f
elif callable(f = getattr(self, "cmdv_" + name)):
        # Do something else with f

However, since I can't do that in Python, I ended up using an extra
local variable instead, like this:

f = getattr(self, "cmd_" + name)
f2 = getattr(self, "cmdv_" + name)
if callable(f):
        # Do something with f
elif callable(f2):
        # Do something with f2

Another common problem for me are while loops. I would often like to do
this:
while (pos = somestring.find("/")) != -1:
        part = somestring[:pos]
        somestring = somestring[pos + 1:]
        # Handle part

However, that, too, is impossible, and I end up doing something like
this:
while True:
        pos = somestring.find("/")
        if pos == -1: break
        # ...

Which is quite ugly. This might have been a bad example, since
somestring.split() could be used instead, but it's still valid for other
situations.

How would you go about these situations?

Thanks for your time!

Fredrik Tolf


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to