On Thu, 20 Dec 2012 21:23:58 -0800, iMath wrote: > Pass and return > Are these two functions the same ?
They are neither functions, nor are they the same. Check if they are functions: - can you pass them arguments? - can you assign their result to a target? No. py> pass(23) File "<stdin>", line 1 pass(23) ^ SyntaxError: invalid syntax py> x = return File "<stdin>", line 1 x = return ^ SyntaxError: invalid syntax Are they the same? Try it with these two functions: def test_pass(): for i in range(100): pass print i def test_return(): for i in range(100): return print i py> test_pass() 99 py> test_return() py> So what are they? They are *statements*, not functions. You cannot pass them arguments, nor do they assign a result to a target on the left hand side of = equals sign. "pass" is a do-nothing statement. It literally does nothing. "return" exits a function and sets the return result. It is only legal inside functions and generators, while "pass" is legal almost anywhere. Normally you say "return some_value", but you can leave out the result and Python will "return None". If functions get all the way to the bottom without a return statement, they will return None. The example you give: > def test(): > return The body of the function immediately returns None. But functions return None by default, so you could leave the "return" statement out. If you do that, you will get a SyntaxError because there is nothing in the body: py> def test(): ... ... File "<stdin>", line 3 ^ IndentationError: expected an indented block So if you put a "pass" statement in, just to satisfy the compiler, you get the same result: > def test(): > pass Also a function which immediately exists and return None. -- Steven -- http://mail.python.org/mailman/listinfo/python-list