On Sat, 26 Mar 2016 23:30:30 +0000, John Pote wrote: > So I have sympathy with the OP, I would expect the compiler to pick this > up
Why? The code is valid, the compiler knows how to generate the appropriate bytecode for it. The compiler isn't "lint". Reporting code which is actually invalid is fairly straightforward. When the parser attempts to match the next token against a parse rule and finds that nothing matches (e.g. the "fnc next" example), it just needs to raise a SyntaxError. The point at which the exception needs to be raised naturally exists in the code. But to identify code which is perfectly valid yet is "probably" a mistake first requires someone to identify such cases, then someone needs to start adding the appropriate tests to the compiler to distinguish such code from the rest. > It would be all to easy to write a series of lines just calling > functions and forget the () on one of them. Not fun programming. It's > also a good reminder that the meaning of a keyword in language A is not > necessarily the same in language B (ie 'next', Python) "next" isn't a keyword, it's a built-in function. It's perfectly valid to re-use that name for your own variables or functions. > So on this last point is this behaviour of Python defined somewhere in > the docs? What behaviour? Evaluating a name? -- https://mail.python.org/mailman/listinfo/python-list