Hi,

On 11/11/2009 12:53 AM, r wrote:
Forgive me if i don't properly explain the problem but i think the
following syntax would be quite beneficial to replace some redundant
"if's" in python code.

if something_that_returns_value() as value:
     #do something with value

# Which can replace the following syntactical construct...

value = something_that_returns_value()
if value:
     #do something with value

i dunno, just seems to make good sense. You save one line of code but
more importantly one indention level. However i have no idea how much
trouble the implementation would be?
I guess the problem would be that this would go against the (design ?) principle of not evaluating functions in the 'if' conditional part, because it would lead to statements such as:

if something(someother(sumsuch() + thisthing())) + ... == value:

also, assignment in the 'if' statement was consciously avoided, if I am not mistaken.

However, the same 'effect' can be obtained with the 'with' statement:
------------------------------------------------
class something_that_returns_value:
     def __init__(self, x):
         # do something with x, self.value is what ought to be 'returned'
         self.value = x

     def __enter__(self):
         if self.value:
             return self.value
         else:
             return ValueError()

     def __exit__(self, type, value, traceback):
         return True


with something_that_returns_value(1) as value:
     print value

with something_that_returns_value(0) as value:
     print value

with something_that_returns_value(False) as value:
     value + 10
     # never reach here
     value.dosomething()

with something_that_returns_value([1,2,3]) as value:
     value.append(4)
     print value

------------------------------------------------
nasty huh ? :)

cheers,
- steve

--
random non tech spiel: http://lonetwin.blogspot.com/
tech randomness: http://lonehacks.blogspot.com/
what i'm stumbling into: http://lonetwin.stumbleupon.com/
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to