REPL with multiple function definitions

Rob Cliffe rob.cliffe at btinternet.com
Tue Jun 28 17:31:34 EDT 2022


On 26/06/2022 23:22, Jon Ribbens via Python-list wrote:
> On 2022-06-26, Rob Cliffe <rob.cliffe at btinternet.com> wrote:
>> This 2-line program
>>
>> def f(): pass
>> def g(): pass
>>
>> runs silently (no Exception).  But:
>>
>> 23:07:02 c:\>python
>> Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32
>> bit (Intel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> def f(): pass
>> ... def g(): pass
>>     File "<stdin>", line 2
>>       def g(): pass
>>       ^
>> SyntaxError: invalid syntax
>> Is there a good reason for this?
> For some reason, the REPL can't cope with one-line blocks like that.
> If you put a blank line after each one-block line then it will work.
It's actually not to do with 1-line blocks, just attempting to define 2 
functions "at once":


22:27:23 C:\>python
Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32 
bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
 >>> def f():
...     return 42
... def g():
   File "<stdin>", line 3
     def g():
     ^
SyntaxError: invalid syntax
 >>>

But you are right that adding a blank line after the first function 
definition solves the "problem".
Rob Cliffe




More information about the Python-list mailing list