map/filter/reduce/lambda opinions and background unscientific mini-survey

Ron Adam rrr at ronadam.com
Wed Jul 6 16:25:26 EDT 2005


Stian Søiland wrote:

> On 2005-07-06 16:33:47, Ron Adam wrote:
> 
> 
>>*No more NamesError exceptions!
>>     print value
>>     >> None
> 
> 
> So you could do lot's of funny things like:
>     
>     def my_fun(extra_args=None):
>         if not extraargs:
>             print "Behave normally"
>             extra_args = 1337
> 
>         if extraargs:
>             asdkjaskdj
>         ..    
>         if extra_args:
>             kajsdkasjd

Yes, returning None from an undefined name is DOA.

In the above case you would get an error by the way.

"if extraargs:"  would evaluate to "if None:", which would evaluate to 
"if:" which would give you an error.


>>*No initialization needed for a while loop!
>>
>>     while not something:
>>         if <condition>:
>>             something = True
> 
> 
> This is the only "good" case I could find, but opening for a lots of
> errors when you get used to that kind of coding:

It would need to be.. while not (something==None):  and the compiler 
would need to handle it as a special case.  But this one could still 
work without allowing something=undefined to be valid.

>     while not finished:
>         foo()
>         finished = calculate_something()
> 
>     (..)
>     (..)  # Added another loop
>     while not finished:
>         bar()
>         finished = other_calculation()    
> 
> Guess the amount of fun trying to find out the different errors that
> could occur when bar() does not run as it should because the previous
> "finished" variable changes the logic.

It's not really differnt than any other value test we currently use.

     notfinished = True
     while notfinished:
         notfinished = (condition)

     # Need to set notfinished back to True here.
     while notfinished:
         <morestuff>


>>*Test if name exists without using a try-except!
>>     if something == None:
>>         something = value
> 
> Now this is a question from newcomers on #python each day.. "How do I
> check if a variable is set?".
> 
> Why do you want to check if a variable is set at all? If you have so
> many places the variable could or could not be set, your program design
> is basically flawed and must be refactored.

There's a few places the Python library that do exactly that.

try:
    value
except:
    value = something

I admit it's something that should be avoided if possible because if 
there's doubt that a name exists, then there would also be doubt 
concerning where it came from and weather or not it's value/object is valid.

Anyway, it was an interesting but flawed idea, I should of thought more 
about it before posting it.

Cheers,
Ron










More information about the Python-list mailing list