string literal or NoneType
Terry Reedy
tjreedy at udel.edu
Sat Mar 15 15:41:32 EDT 2008
<menosaint at gmail.com> wrote in message
news:b2d5cbd3-b207-4c46-89ef-75ae101752ca at e6g2000prf.googlegroups.com...
| hi all
| i want to check a condition and if true should return a filename
| string from a list.if the condition is false i am returning a
| "" (string literal)..
|
| retv=""
| if somecondition:
| retv=mylist[x]
| ...
| return retv
|
|
| The calling function will check the return value and print the
| filename if it is not """.
| in the calling function i can code
| if returnval !="":
| print "filename is:",returnval
| else:
| print "no filename found"
|
| what i want to know is ,should i rewrite the if returnval !="" as
|
| if returnval:
| print "filename is:",returnval
| else:
| print "no filename found"
In this situation, where returnval must be a string, the two are
equivalent.
So I consider the shorter, more efficient form stylistically better.
In situations where various null or non-null conditions are not equivalent,
one should use the one that is correct for the situation.
| or is the way i coded the right way ? i am little confused here
| Someone suggested that i make a variable retv None and if the
| condition true then set retv as filename ,
|
| retv=None
| if somecondition:
| retv=mylist[x]
|
| ...
| return retv
|
| which approach is correct..?
As long as the function returns are documented and the behavior matches the
documentation and the calling code matched the behavior, both are
'correct'.
I see this as stylistic preference. I can think of situations where a null
string might be more useful that None, so I might go with that. Others
might think of situations where a None return might be better. But a
function cannot satisfy all possible callers ;-)
(The is one problem with writing library code.)
Terry Jan Reedy
More information about the Python-list
mailing list