Alex Rivera | Logout

Safe dereferencing in Python

Asked 2010-10-31T21:00:34.790
53

Groovy has a nice operator for safe dereferencing, which helps to avoid NullPointerExceptions:

variable?.method()

The method will only be called, if variable is not null.

Is there a way to do the same in Python? Or do I have to write if variable: variable.method()?

Edit
Report

2 Answers

8

I've used this feature in Groovy, so I won't repeat the blub paradox of other posters.

In Groovy a statement like this

if(possiblyNull?.value){
    ...

Does this in Python

try:
    testVar = possiblyNull.value
except:
    testVar = None
if(testVar): 

It's definitely a cool feature in Groovy, and is helpful in removing syntactical noise. There are a few other bits of syntactical sugar, like the Elvis operator or *, but they do sacrifice legibility as the expense for quick fix symbols (in other words, they're no Pythonic).

Hope that helps :-)

answered 2010-12-10T15:59:33.683
2

An idiom I have seen and used is callable(func) and func(a, b, c) in place of a plain function call (where the return value is not used). If you are trying to use the return value, however, this idiom will yield False if the function is not callable, which may not be what you want. In this case you can use the ternary operator to supply a default value. For example, if the function would return a list that you would iterate over, you could use an empty list as a default value with func(a, b, c) if callable(func) else [].

answered 2010-10-31T23:24:20.927

Your Answer