In article <[EMAIL PROTECTED]>,
 Gary Wessle <[EMAIL PROTECTED]> wrote:

> Hi
> 
> is there a way to make an assignment in the condition of "if" and use
> it later, e.g.
> 
> nx = re.compile('regex')
> if nx.search(text):
>    funCall(text, nx.search(text))
> 
> nx.search(text) is evaluated twice, I was hoping for something like
> 
> nx = re.compile('regex')
> if x = nx.search(text):
>    funCall(text, x))

Personally, I find the C-style idiom you long for to be convenient and 
useful.  That being said, it does not exist in Python, by deliberate design 
decision.  In Python, assignment is not an operator with side effects like 
in C or Java, but a statement.  What you need to do is:

nx = re.compile('regex')
x = nx.search(text)
if x:
   funCall(text, x))

The lack of embedded assignments leads to slightly more verbose code in 
situations like this, but on the other hand, it avoids the typical C 
disaster of writing a whole function as a one liner.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to